node.js - Nodejs 和 Angular 路由之间可能存在冲突

标签 node.js angular

首先,我在使用 HTML/CSS 和浏览器 Javascript(包括 AngularJS)方面拥有丰富的经验

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

到目前为止,我发誓不可能从客户端路由中省略散列字符(或任何类似的字符),因为(我认为)它总是会转到服务器进行路由在这种情况下。

示例:我有一个 Nodejs Express 应用程序,当在 / 上发出 GET 时,该应用程序会发送 index.html

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

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

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

我很困惑。

最佳答案

首先是一个基本的答案。如果这是我们正在寻找的内容,我将对其进行编辑以使其更好:

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

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

是的,如果两个点都存在相同的路线,您需要在服务器上制定一个逻辑来决定是否将控制权交还给 Angular。我使用的简单解决方案是所有服务器路由都以 /api 开头,因此除了 /api/* 路由之外,所有服务器路由都重新输入回 Angular 起点。

关于node.js - Nodejs 和 Angular 路由之间可能存在冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43514603/

相关文章:

node.js - 无法从 Heroku 上托管的 Express 应用程序设置 cookie

@Component 的 Angular @Unsubscribe 装饰器

javascript - 如何使用循环以表格形式打印 Localstorage 数组值?

javascript - 破折号案例(Kebab 案例) Angular 2 中的数据绑定(bind)

javascript - 无法获取 View 中的对象属性

node.js - Firebase云函数无法读取未定义的属性 'displayName'

node.js - 风 sails JS : Best way to seed initial users

html - Angular 'ng-container' 的 React 等价物是什么

javascript - Node.js 代理请求并使用 AES 对其进行加密

javascript - Express MongoDB 和 Mongoose 使用 findByIdAndRemove() 删除然后重定向