网站搜索

javascript - 使用 NodeJS 编写实时应用程序


我期待使用 NodeJS 构建实时网页应用。来自 Rails,我已经爱上了 NodeJS 和异步 JS 编程。

用 Node 做了几个实验,然后在我寻找工具和资源以熟悉它时,我被那里的大量东西弄得应接不暇。

我在那里找到了很多库和组件,并且对如何构建一个大规模、良好编写和实现的实时网页应用感到相当困惑。

所以这个应用将运行在 NodeJS 上,使用 Express 框架。

我读到过 knockout.js,这是一个客户端库,用于提供实时功能,比如自动刷新 UI,我想我可以把它和 jQuery 结合使用。另外,我还发现了 socket.io。作者说:Socket.IO 旨在让每个浏览器和移动设备都能使用实时应用,模糊不同传输机制之间的差异。这是完全用 JavaScript 实现的无忧实时。所以 socket.io 是关于兼容性的。那么 backbone.js 呢?它是用来做什么的?

面对这么多内容,我感到很震惊。我应该学什么?哪些模块值得学习?我主要专注于 NodeJS 和 Express,但大多数书籍/视频课程都涵盖旧版本的 NodeJS。所以我现在主要参考官方 API。现在我来向你请教建议,并希望能把外面的信息整理一下。如果我的假设不准确,请纠正我,并指引我正确的方向,也欢迎推荐任何其他可能对我的学习有帮助的模块。

提前感谢

答案#1

当你考虑这个问题时,将 node.js 服务器端库(通过 npm 等)与所有客户端(浏览器)库和技术如 jquery、backbone、knockout 等分开可能会对你有用。即使是 socket.io,它在浏览器和服务器之间暴露了一个持久的 socket 连接(以避免轮询),也不会规定你使用哪种客户端技术。

专注于从你的服务器公开一个稳固的 web-api(随机示例),你的客户端技术可以被替换、增强等,而不会影响服务器。它们唯一交汇的地方是如果你使用像 Jade 这样的视图技术。另一种选择是实现完全分离的架构,服务器只负责提供客户端文件,而你的客户端是一个更复杂的 JavaScript 应用程序(使用 knockout、jquery 等)调用良好的服务器 web api。

有些人尝试统一客户端和服务器模型——例如,这篇文章使用了 Backbone 和 Node。是否可行取决于你处理的数据量,但这确实将客户端和服务器耦合起来,并使服务器具有状态,这可能带来一些缺点(扩展困难,需要关联等)。就个人而言,我对这种大量魔法(绑定、状态、同步等)会感到警惕。Node 的理念是保持事物简单、轻量和快速。它是一个快速的前端网络服务器。

我的两分钱意见(可能有人不同意)。从服务器上的 Node 开始,然后选择你的存储(MongoDB 等)。设计一个稳健的 RESTful(超媒体)API——一个好的 Web API 不依赖于客户端。然后从一个基本的 HTML/CSS/JS 客户端开始,也许用 jQuery,并在你扩展客户端技能时添加像 Knockout 这样的东西。这将允许你在服务器不变的情况下根据新的技术潮流(它们肯定会变化)更换你的客户端技术。

这是一个设计良好的系统的标志——能够在不重写所有内容的情况下替换组件/子系统 :)

希望这能帮助你理清一些困惑 :)

答案#2

如果你专注于实时 JavaScript 应用程序,你可能想看看 Meteor:http://meteor.com/