首先,我有很多使用HTML / CSS和浏览器Javascript(包括AngularJS)的经验
现在我开始使用NodeJS和Angular(2)。
到目前为止,我将宣誓无法从客户端路由中省略哈希字符(或任何类似字符),因为(我认为)它总是会去服务器进行路由在那种情况下。
示例:我有一个nodejs express应用程序,在/
上发出GET时发送index.html
然后有一个(客户端)Angular应用程序,它有自己的路由,没有哈希字符。例如,当我从客户端应用程序中访问/myroute
时,它将使用Angular路由来确定应该呈现给用户的视图模板。
我不明白。为什么不去服务器确定路由?此外,如果我直接在浏览器中输入URL(包括/myroute
),它仍然设法使用Angular进行路由。
当我向/myroute
添加服务器端路由时会发生什么?
我很困惑。
答案 0 :(得分:2)
首先是一个基本的答案。我会编辑它以使它更好,如果这是我们正在寻找的:
您在应用内部点击,然后使用locationProvider和HTML5 History API angular接管导航尝试并使用Angular Router在内部处理它
直接使用地址栏导航意味着浏览器尝试直接从服务器获取页面,而angular不能覆盖。因此,解决方案是简单的URL重写。如果在您的情况下是节点,您将执行app.all()
之类的操作,将所有请求重定向回角应用所在的索引文件。然后客户端路由器从那里接管。
是的,如果两个点都存在相同的路径,则需要在服务器上创建一个逻辑来决定是否将控制权交还给angular。简单的解决方案,我使用的是所有服务器路由都以/api
开头,所以除了/api/*
路由都重新进入角度起点。