首先,我在使用 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/