我正在努力学习HTML5/Node.js/Express/MongoDB/AngularJS/Websocket,这似乎让每个人都很兴奋。
作为一种轻微的反作用,我实际上很难对每种技术的实际功能进行划分(尤其是将ejs作为模板引擎)。到处都是Javascript和HTML!
特别是,我在分离websockets(或类似socket.io的东西)和AngularJS提供的服务时遇到了问题。它们似乎都试图在不需要重新发送整个HTML页面的情况下提供动态性。
它们是彼此的替代品吗?还是它们有不同的用途?
此外,这两种技术似乎都转向了绕过Express路由的单页web应用程序。那么,Express在使用Websockets/AngularJS时会利用什么呢?Express提供的传统路由似乎被AngularJS 中的单个页面中的视图更改所取代
XmlHttpRequest和WebSockets都是用于与服务器交换数据而无需重新加载网站的技术。不同之处在于,XmlHttpRequest(通常称为AJAX)遵循请求-响应模型(客户端发出请求,服务器回答),而WebSocket使用双向通道,客户端和服务器都可以随时发送消息。
Express.js可以做很多事情,但它作为node.js web服务器的速度对我来说是最大的好处。
当我制作Angular应用程序(通常使用Yeoman构建)时,我首先安装一个express应用程序并运行Yeoman的Angular生成器,然后编辑app.js以删除视图/路由引用,并提供Yeoman在Grunt测试和缩小所有内容后创建的/dist文件夹。
通过这种方式,我可以使用Angular作为一个完整的MVC,包括路由。我还没有在这种配置中使用websocket,尽管我可能想用于数据库(MongoDB或任何其他)通信和/或数据索引,尤其是对非关系数据库有用。