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

时间:2011-04-11 06:44:09

标签: javascript node.js serverside-javascript server-side

  

可能重复:
  How to decide when to use Node.js?

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

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

4 个答案:

答案 0 :(得分:94)

它在I/O的ontop上实现了异步非阻塞V8构建。

因此,我们获得了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还不稳定,或者它是一个低于1.0的版本。

答案 1 :(得分:29)

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

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

对我来说,最有趣的部分是这个地区发生的活动量。节点正在开发中有很多非常有趣的想法 - 请务必查看list of Node.js modules

答案 2 :(得分:18)

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

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

答案 3 :(得分:11)

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

  • 我想编写一个不使用HTTP protocol的服务器。
  • 我正在对服务器实现进行原型设计。
  • 我正在编写一个不期望大量流量的服务器(虽然我从来没有在一个匹配的C ++实现旁边描述一个Node.js实现)。
  • 我想积极参与社区活动(显然增长很快)。