142

可能重复:
如何决定何时使用 Node.js?

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

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

4

4 回答 4

98

它是在V8之上构建的异步非阻塞I/O

因此,我们获得了 V8 的所有性能增益,即 Google JavaScript 解释器。由于 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 的 OS 库可以为您提供抽象,例如Express.jsnow

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

于 2011-04-11T09:20:16.593 回答
29

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

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

不过对我来说,最有趣的部分是该领域发生的活动量。有很多非常有趣的关于 node 的想法正在开发中 - 请务必查看Node.js 模块列表

于 2011-04-11T06:48:17.037 回答
18

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

  • 它是一个低级、轻量级的独立框架,将 JavaScript 的强大功能带入服务器端环境。
  • 如果您喜欢更高级别的抽象,那么这里有大量的模块npm包管理器,您可以在其中找到各种现成的应用程序。
  • 快速/无阻碍的开发过程——例如,你不需要大量额外的工具来开始编写严肃的东西。
  • 基于开源的大型社区,充满了爱好者和非常有才华的人。
  • 专为创建面向 Web 的实时应用程序而设计——这就是(不远的)未来。
于 2011-04-11T09:04:14.320 回答
11

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

  • 我想写一个不使用HTTP 协议的服务器。
  • 我正在对服务器实现进行原型设计。
  • 我正在编写一个不期望大量流量的服务器(尽管我从未在匹配的 C++ 实现旁边分析 Node.js 实现)。
  • 我想在社区中活跃起来(这显然正在迅速增长)。
于 2011-04-11T06:51:08.950 回答