NodeJS和AngularJS概念混淆

NodeJS and AngularJS Conceptual confusion

本文关键字:AngularJS NodeJS      更新时间:2023-09-26

我最近用AngularJS做了一些简单的单页应用程序,但我从来没有使用过服务器,我在本地运行…今天我开始了一个NodeJS课程,有一些事情困扰着我…例如,如果我在127.0.0.1:1330上有一个请求,并且有一个NodeJS服务器在这个地址/端口上监听,我必须根据URL选择我将响应的数据(例如:如果URL是'/',我将响应index.html)。前进……假设这个页面使用外部脚本资源,那么我必须配置一个路由来响应脚本文件时,它被请求,这就是我的疑问在哪里…如果你有一个AngularJS应用程序,整个过程的概念是在开始时加载所有的HTML/Script文件,这样当你改变URL时(在Angular中使用HREF来伪造URL),你就不必重新发出请求,如果你需要NodeJS服务器在每次URL改变时都用正确的文件响应,那么整个过程就会中断。我想我对NodeJS路由和AngularJS路由做了一些混淆。

通常你只会提供一个html页面(和它的资源),并重写所有相关的url,以便他们加载相同的页面(假设路由器是在html5模式的漂亮的url)。如果你不使用html5模式那么angular路由只使用锚点所以它与URL无关因为服务器会看到的是对index.html

的请求

不漂亮的路由(不需要重写,因为它只是使用锚)

http://localhost/index.html/!/myRoute

Pretty route: (server must still server index.html)

http://localhost/myRoute

当使用漂亮的URL时,angular使用HTML5历史API来改变浏览器中显示的URL -这样做的问题是,如果用户直接导航到该页,或者如果用户刷新页面,服务器需要知道它应该为/myRoute发送index.html

你将从不同的url为一个单页应用程序加载的是你的数据-你可能会做一个AJAX请求来联系一个端点获取/设置/更新/删除数据。

为了进一步阅读,下面的问题有很多关于Angular路由的好答案在html5模式下没有哈希的AngularJS路由