nodejs和角度路由之间可能发生冲突

时间:2017-04-20 08:49:08

标签: node.js angular

首先,我有很多使用HTML / CSS和浏览器Javascript(包括AngularJS)的经验

现在我开始使用NodeJS和Angular(2)。

到目前为止,我将宣誓无法从客户端路由中省略哈希字符(或任何类似字符),因为(我认为)它总是会去服务器进行路由在那种情况下。

示例:我有一个nodejs express应用程序,在/上发出GET时发送index.html

然后有一个(客户端)Angular应用程序,它有自己的路由,没有哈希字符。例如,当我从客户端应用程序中访问/myroute时,它将使用Angular路由来确定应该呈现给用户的视图模板。

我不明白。为什么不去服务器确定路由?此外,如果我直接在浏览器中输入URL(包括/myroute),它仍然设法使用Angular进行路由。

当我向/myroute添加服务器端路由时会发生什么?

我很困惑。

1 个答案:

答案 0 :(得分:2)

首先是一个基本的答案。我会编辑它以使它更好,如果这是我们正在寻找的:

您在应用内部点击,然后使用locationProvider和HTML5 History API angular接管导航尝试并使用Angular Router在内部处理它

直接使用地址栏导航意味着浏览器尝试直接从服务器获取页面,而angular不能覆盖。因此,解决方案是简单的URL重写。如果在您的情况下是节点,您将执行app.all()之类的操作,将所有请求重定向回角应用所在的索引文件。然后客户端路由器从那里接管。

是的,如果两个点都存在相同的路径,则需要在服务器上创建一个逻辑来决定是否将控制权交还给angular。简单的解决方案,我使用的是所有服务器路由都以/api开头,所以除了/api/*路由都重新进入角度起点。