我对这类东西很陌生,但最近我听到了很多关于Node.js有多棒的消息。考虑到我是多么喜欢使用 jQuery 和 JavaScript,我不禁想知道如何决定何时使用 Node.js。我想到的 Web 应用程序类似于Bitly - 获取一些内容,将其存档。
我的感觉是 Node.js 特别适合您希望保持从浏览器到服务器的持久连接的应用程序。使用一种称为“Long_polling”的技术,您可以编写一个向用户实时发送更新的应用程序。对许多网络巨头(如Ruby on Rails或Django)进行长时间轮询会在服务器上产生巨大的负载,因为每个活动客户端都会占用一个服务器进程。这种情况相当于tarpit攻击。当你使用 Node.js 之类的东西时,服务器不需要为每个打开的连接维护单独的线程。
这意味着您可以在 Node.js 中创建一个基于浏览器的聊天应用程序,该应用程序几乎不占用系统资源来为大量客户提供服务。任何时候你想进行这种长轮询,Node.js 都是一个不错的选择。
值得一提的是,Ruby 和 Python 都有工具来做这种事情(分别是eventmachine和twisted),但是 Node.js 做得非常好,而且从头开始。JavaScript 非常适合基于回调的并发模型,并且在这方面表现出色。此外,能够对客户端和服务器都使用本机 JSON 进行序列化和反序列化非常棒。
我期待在这里阅读其他答案,这是一个很棒的问题。
值得指出的是,Node.js 也非常适合在客户端/服务器之间重用大量代码的情况。Meteor 框架使这变得非常容易,很多人认为这可能是 Web 开发的未来。我可以根据经验说,在 Meteor 中编写代码非常有趣,其中很大一部分是花更少的时间考虑如何重构数据,因此在浏览器中运行的代码可以轻松操纵它并将其传回。