关于javascript:为什么以及何时使用node.js?

Why and when to use Node.js?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to decide when to use Node.js?

抱歉,如果我有点含糊不清,但是我试图理解使用node.js而不是其他服务器端语言的真正优势。

我是一个JavaScript爱好者,所以我可能会玩node.js,但我想知道是否应该在我的项目中使用它。


它是发生在V8的异步非阻塞I/O构建本体上的。

所以我们有了V8的所有性能增益,它是GoogleJavaScript解释器。由于JavaScript性能竞赛还没有结束,您可以期望Google不断更新V8的性能(免费)。

我们有非阻塞的I/O,这只是做I/O的正确方法。这是基于一个事件循环,并对您的I/O使用异步回调。

它为您提供了一些有用的工具,如创建HTTP服务器、创建TCP服务器、处理文件I/O。

它是一个低级别、高性能的平台,用于执行任何类型的I/O,而不必从头开始用C语言编写整个过程。由于不阻塞I/O,它的伸缩性非常好。

因此,如果您希望使用非阻塞I/O编写高伸缩性和高效的应用程序,同时仍有可用的高级脚本语言,那么您需要使用node.js。如果需要,可以用C编写扩展来手动优化代码的某些部分。

有很多node.js的操作系统库可以提供抽象,比如express.js和now。

如果您希望(缓慢的)高级抽象为您做任何事情,就不希望使用node.js。如果需要rad,则不想使用node.js。如果你不能信任一个年轻的平台,你不想使用node.js,要么是因为你必须自己编写大量的代码来做其他框架中内置的事情,要么是因为你不能使用node.js,因为API还不稳定,要么是Sub1.0版本。


引用最多的两个优点是:

  • javascript既是服务器端,又是客户端。要学习的东西更少,上下文切换更少,并且能够跨双方重用代码。
  • 使用非阻塞I/O和Chrome的V8引擎,提供快速、高度可扩展的服务器。

不过,对我来说,最有趣的部分是这一领域发生的活动量。node的开发中有很多非常有趣的想法——一定要查看node.js模块的列表。


当你是(或者即使你不是)一个javascript爱好者时,你可以/应该使用node.js有很多原因:

  • 这是一个低级、轻量级和独立的框架,它为服务器端环境带来了JavaScript的强大功能。
  • 如果您喜欢更高级别的抽象,那么有大量的模块和NPM包管理器,您可以在其中找到各种现成的应用程序。
  • 快速/无阻碍的开发过程-例如,您不需要大量的额外工具来开始编写重要的东西。
  • 大型开放源码社区,充满了狂热者和非常有才华的人。
  • 专为创建面向Web的实时应用程序而设计—这正是(不久的)未来所在。


就我个人而言,我最有可能在以下情况下使用node.js:

  • 我想写一个不使用HTTP协议的服务器。
  • 我正在构建一个服务器实现的原型。
  • 我正在编写一个不希望有大量流量的服务器(虽然我从来没有对NoDE.js实现作一个描述,比如说,一个匹配的C++实现)。
  • 我想在社区里活跃起来(很明显,这个社区发展得很快)。