为什么以及何时使用 Node.js?

可能的复制品:
如何决定何时使用 Node.js

对不起,如果我有点模棱两可,但我试图了解使用 Node.js而不是其他服务器端语言的真正优势。

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

29966 次浏览

最常被引用的两个优势是:

  • JavaScript 既是服务器端的,也是客户端的。需要学习的内容较少,上下文切换较少,并且能够跨两个方面重用代码。
  • 使用非阻塞 I/O 和 Chrome 的 V8引擎,提供快速、高度可伸缩的服务器。

然而对我来说,最有趣的部分是这个地区发生的活动的数量。有很多非常有趣的想法正在开发的节点-一定要检查的 Node.js 模块列表

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

  • 我想编写一个不使用 HTTP 协议的服务器。
  • 我在构建一个服务器实现的原型。
  • 我正在编写一个不需要大量流量的服务器(尽管我从未在匹配的 C + + 实现旁边描述过 Node.js 实现)。
  • 我想积极参与社区活动(这个社区显然发展得很快)。

如果你是(或者即使你不是)一个 JavaScript 爱好者,你可以/应该使用 Node.js 的原因有很多:

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

它在 V8引擎之上进行异步非阻塞 输入/输出构建。

所以我们拥有了 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 的操作系统库可以提供抽象,比如 快递现在

如果您希望(缓慢的)高级抽象为您做所有事情,那么您不需要使用 Node.js。如果想要 RAD,就不要使用 Node.js。如果你不能信任一个年轻的平台,你就不想使用 Node.js,因为你必须自己编写大量的代码来完成构建到其他框架中的工作,或者因为你不能使用 Node.js,因为 API 还不稳定,或者它是一个1.0以下的版本。