我期待用NodeJS构建RT网络应用程序。来自Rails,我感觉很喜欢NodeJS和Async JS编程。
使用Node运行一些实验,然后当我搜索工具和资源以供使用时,我对那里的很多东西感到不知所措。
我在那里发现了许多库和组件,并且很多人对如何构建大规模编写和实现的RT Web应用程序感到困惑。
因此,应用程序将使用NodeJS
框架在Express
上运行。
我读到了knockout.js
,这是一个客户端库,提供自动UI刷新等实时内容,我想我可以用jQuery来实现它。
另外,我找到了socket.io
。
作者说:
Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript.
所以socket.io是关于兼容性的。
那么backbone.js
呢?它去哪儿了?
有这么多东西,我感到震惊。我该学什么?哪些模块值得研究? 我专注于NodeJS和Express,但大多数书籍/截屏报道都涵盖了旧版本的nodejs。所以我正在以其官方API为指导。 现在我在这里询问你的建议,并以某种方式组织所有信息。 如果我的假设不准确,请纠正我,请指出正确的方向,并随意建议任何其他可以帮助我学习的模块。
提前致谢
答案 0 :(得分:7)
将node.js服务器端库(通过npm等等)与所有客户端(浏览器)库和jquery,backbone,knockout等技术分开可能很有用...当你想一想。即使是socket.io暴露了浏览器和服务器之间的持久套接字连接(以避免轮询)也没有规定你使用的客户端技术。
专注于从服务器公开可靠的web-api(random example),您的客户端技术可以交换,扩充等......对服务器没有影响。它们相交的唯一地方就是你正在使用像Jade这样的视图技术。它也是一个纯粹的分离选项,服务器只是提供客户端文件,而你的客户端是一个更厚的javascript应用程序(使用knockout,jquery等......)调用一个好的服务器web api。
有些人尝试统一客户端和服务器模型 - 例如,this article使用骨干和节点。这取决于您使用多少数据来说明这是否可行,但它确实将客户端和服务器耦合在一起并使服务器有状态,这可能有缺点(向外扩展,需要亲和力......)。就个人而言,我对那么多魔法(绑定,状态,同步等等)都很谨慎。节点就是保持简单,轻便和快速。它是一个快速的前端网络服务器。
我的2美分(有些人可能不同意)。从服务器上的节点开始,然后选择存储(mongoDb等...)。设计一个solid RESTful (hypermedia) API - 一个好的webapi,无论客户端如何。然后从一个基本的html / css / js开始,也许是jquery客户端,并添加诸如knockout等东西......当你扩展你的客户端技能时。这将允许您随着新技术的变化而改变您的客户端技术(他们将会改变)。
这是精心设计的系统的标志 - 能够在不重写所有内容的情况下替换组件/子系统:)
希望有助于消除一些迷雾:)
答案 1 :(得分:0)
如果您专注于实时Javascript应用,可能需要查看Meteor:http://meteor.com/