我是新手,但最近我听到很多关于Node.js有多好的消息。考虑到总体上我是多么热爱使用jQuery和JavaScript,我不禁想知道如何决定何时使用Node.js。我心目中的web应用程序类似于Bitly-获取一些内容,并将其存档。
从过去几天我一直在做的所有作业中,我获得了以下信息。node.js
我所接触到的一些资料来源是:
考虑到Node.js几乎可以在Amazon的EC2实例上开箱即用地运行,我试图理解Node.js需要什么类型的问题,而不是PHP、Python和Ruby。我知道这实际上取决于一个人对一种语言的专业知识,但我的问题更多地属于一般的范畴:什么时候使用一个特定的框架,它特别适合于什么类型的问题?
您很好地总结了Node.js的优点。我的感觉是,Node.js特别适合那些希望维护从浏览器返回服务器的持久连接的应用程序。使用一种称为“长轮询”的技术,您可以编写一个将更新实时发送给用户的应用程序。在许多Web巨头(如Ruby on Rails或Django)上进行长时间轮询会在服务器上产生巨大的负载,因为每个活动客户机都会消耗一个服务器进程。这种情况相当于油污攻击。当您使用像node.js这样的东西时,服务器不需要为每个打开的连接维护单独的线程。
这意味着您可以在Node.js中创建一个基于浏览器的聊天应用程序,它几乎不需要系统资源就可以为大量客户机提供服务。任何时候您想要进行这种长轮询,Node.js都是一个很好的选择。
值得一提的是,Ruby和Python都有做这种事情的工具(分别是eventmachine和twisted),但Node.js做得特别好,而且是从头开始做的。JavaScript非常适合基于回调的并发模型,它在这方面表现出色。此外,能够使用客户端和服务器的本地JSON序列化和反序列化也是非常棒的。
我期待着在这里读到其他的答案,这是一个梦幻般的问题。
值得指出的是,Node.js也非常适合在客户机/服务器之间重用大量代码的情况。Meteor框架使这一点变得非常容易,许多人认为这可能是web开发的未来。我可以说,根据经验,在Meteor中编写代码非常有趣,其中很大一部分是花更少的时间来考虑如何重构数据,因此在浏览器中运行的代码可以轻松地操作它并将其传递回来。
这里有一篇关于金字塔和长轮询的文章,在gevent的帮助下很容易设置:TicTacToe和使用金字塔的长轮询。