Node.js Web应用程序示例/教程


110

因此,我看完了道格拉斯· 克罗克福德(Douglas Crockford)关于Javascript的出色系列,在最后一集中(到目前为止),循环播放中,他阐述了为什么Node.js是服务器端代码的近乎完美的解决方案。

他谈到了保持状态,而不是在数据库中,而是在Node.js中运行的闭包中保持状态,他还指出,模板系统(如JSP,PHP和ASP)对于较复杂的Web应用程序而言不是很好的抽象,并且node.js提供了一个解决方案。

我已经准备好购买,但是我找不到使用此模式的任何Web应用程序示例,也找不到任何有关如何执行此操作的书籍或教程。我不是在讨论简单的应用程序,而是要使用克罗克福德在演讲中谈到的模式。任何人都知道我在哪里可以找到用Node.js编写的Web应用程序的一些教程/示例(是的,我知道GeddyExpressJs,但是它们似乎并没有遵循Crockford所说的根本不同的模式,更像是在Node.js上获得Railsy体验)。

[未来3年的注意:ExpressGeddySailsKraken等似乎都是Ruby / PHP / Java的Rails / Symfony / Spring框架的重新实现。而HoodieMeteor之类的东西正在尝试一种全新的范例。 KOA看起来很有趣,但是离实用性还有一段距离,但是看起来它是基于javascript的优势以及过去MVC应用程序的历史而建立的。3年过去了,对于Node.js来说仍然是令人兴奋的时刻,即使它不再是新的热点。至少现在有许多现实中使用Node的例子...


10
我认为这很有建设性。我在寻找教程/应用程序。这对我有用
MartinL 2013年

Answers:





4

更新资料

从雅虎DAV玻璃给在YuiConf2010在十一月的谈话是在现在可从视频

他极大地展示了如何使用YUI3在服务器端渲染小部件,并在禁用JS时使它们与GET请求一起工作,或者在激活时使它们正常工作。

他还展示了如何使用服务器端DOM在渲染和其他很酷的东西之前应用样式表的示例。

可以在他的GitHub帐户上找到这些演示。

缺少IMO使其变得非常出色的部分是小部件状态的某种基础存储。这样一来,无需JavaScript即可访问页面,并且一切正常,然后打开JS,现在小部件的状态与以前相同,但无需重新加载页面即可工作,然后将一些保存到服务器+ WebSockets中以在多个页面之间进行同步打开浏览器....下一代不显眼且优雅地降级的ARIA诞生了。

原始答案

好吧,然后自己构建它。

认真地说,目前所有WebApp的90%都可以使用REST方法运行良好,当然,您可以做一些神奇的事情,例如出色的用户跟踪,实时跟踪下载,检查正在观看的视频部分等。

一个问题是可伸缩性,一旦拥有多于1个节点的进程,在请求之间存储数据的许多(但不是全部)好处就会消失,因此您必须确保客户端始终使用相同的进程。即使那样,更大的事情仍将需要数据库层。

Node.js并不是解决所有问题的解决方案,我相信人们将来会构建出非常出色的东西,但这需要一些时间,现在许多人只是将东西移植到Node上以使事情顺利进行。

(IMHO)使Node.js如此出色的原因在于,它简化了开发过程,您只需编写更少的代码,它就可以与JSON完美结合,而无需进行所有上下文切换。

到目前为止,我主要进行了游戏实验,但是可以肯定地说,将来会有很多很酷的多播放器(甚至MMO)东西同时使用HTML5和Node.js。

Node.js仍在吸引人们的注意,几年前它甚至还没有接近RoR Hype(只需在SO上查看一下Node.js标记,每天就很少问4-5个问题)。

罗马(或RoR)并不是一整夜建成的,Node.js也不是。

Node.js具有所需的全部潜力,但人们仍在尝试,所以我建议您加入他们:)


2

最接近的事情可能是Dav Glass使用node.js,express和YUI3进行的实验工作。基本上,他解释了如何使用YUI3在服务器端呈现标记,然后将其发送到客户端,在客户端与事件和数据进行绑定。美丽之处在于,YUI3在客户端和服务器上都按原样使用。很有道理。一个大问题是还没有可用于生产的服务器端DOM库。

截屏


1
是的,实际上,这个演讲是使我对Node.js感到兴奋的演讲之一(尽管使用jquery而不是YUI blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs的想法 要多得多)对我来说很令人兴奋)
Kris Erickson 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.