为什么以及何时使用Node.js?[重复]

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

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

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

小卤蛋梅2020/04/07 11:33:19

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

  • 我想编写一个不使用HTTP协议的服务器
  • 我正在对服务器实现进行原型设计。
  • 我正在编写一个不会产生大量流量的服务器(尽管我从未在匹配的C ++实现旁边配置过Node.js实现)。
  • 我想在社区中活跃起来(社区正在迅速发展)。
Green逆天2020/04/07 11:33:19

当您(或者即使您不是)是JavaScript爱好者时,出于多种原因,您可以/应该使用Node.js:

  • 这是一个低级,轻量级和独立的框架,将JavaScript的功能带到了服务器端环境。
  • 如果您喜欢更高级的抽象,那么这里有大量的模块npm软件包管理器,您可以在其中找到各种现成的应用程序。
  • 快速/轻松的开发过程-例如,您不需要大量其他工具即可开始编写严肃的东西。
  • 基于大型开源社区,到处都是发烧友和非常有才华的人。
  • 专为创建面向实时Web的应用程序而设计-这就是(不久的将来)的未来。
LGil2020/04/07 11:33:19

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操作系统库可以为您提供抽象,例如Express.jsnow

如果希望(慢速)高级抽象为您做所有事情,则不想使用Node.js。你不想,如果你想使用Node.js的RAD如果您无法负担起一个年轻的平台,则不想使用Node.js,这可能是由于必须自己编写大量代码来完成内置在其他框架中的事情,或者是因为您无法使用Node .js,因为API尚不稳定,或者它是Sub 1.0发行版。

番长2020/04/07 11:33:19

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

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

但是对我而言,最有趣的部分是该区域发生的活动量。关于节点的开发有很多非常有趣的想法-请务必查看Node.js模块列表