我最近使用AngularJS制作了一些简单的单页应用程序,但我从未使用过服务器,我在本地咆哮...今天我开始使用NodeJS课程并且有些事困扰我...例如,如果我有一个请求127.0.0.1:1330并且有一个NodeJS服务器正在监听这个地址/端口,我必须根据URL选择我将响应的数据(例如:如果URL为&,我将回复index.html) #39; /')。继续前进......假设这个页面使用了一个外部脚本资源,那么我必须配置一个路由来响应请求时脚本文件,这就是我怀疑的地方......如果你有一个AngularJS应用程序,整个事情的概念是在开始时加载所有HTML / Script文件,因此当您更改URL(使用Angular中的HREF伪造URLS)时,您不必提出新请求。如果您需要NodeJS服务器在每次URL更改时使用正确的文件进行响应,那么整个事情就会被打破。我想我对NodeJS路由和AngularJS路由有些混淆。
答案 0 :(得分:1)
通常你只会提供一个html页面(以及它的资源)并重写所有相关的URL,以便它们加载相同的页面(假设路由器在html5模式下用于漂亮的URL)。如果您没有使用html5模式,那么角度路由只使用锚点,因此它与URL无关,因为所有服务器都会看到对index.html的请求
非漂亮路线(不需要重写,因为它只使用锚点)
http://localhost/index.html/#!/myRoute
漂亮路线:(服务器仍必须提供index.html)
使用漂亮网址时,angular使用HTML5历史记录API来更改浏览器中显示的网址 - 问题在于,如果用户直接导航到该网页,或者用户刷新网页,则服务器需要知道该网页应该发送index.html for / myRoute
您从单个页面应用程序的不同网址加载的是您的数据 - 您可能会执行AJAX请求以联系获取/设置/更新/删除数据的端点。
为了进一步阅读,以下问题在html5模式下有关Angular路由AngularJS routing without the hash的很多好答案