提问人:gion_13 提问时间:4/11/2011 最后编辑:Communitygion_13 更新时间:7/19/2014 访问量:30135
为什么以及何时使用Node.js?[复制]
Why and when to use Node.js? [duplicate]
问:
可能的重复:
如何决定何时使用Node.js?
对不起,如果我有点模棱两可,但我试图理解使用 Node.js 而不是其他服务器端语言的真正优势。
我是一个 JavaScript 爱好者,所以我可能会玩 Node.js,但我想知道我是否应该在我的项目中使用它。
答:
两个最常被引用的优点是:
- JavaScript 既是服务器端的,也是客户端的。要学习的东西更少,上下文切换更少,并且能够在两端重用代码。
- 使用非阻塞 I/O 和 Chrome 的 V8 引擎来提供快速、高度可扩展的服务器。
不过,对我来说,最有趣的部分是这个领域发生的活动量。有很多非常有趣的想法正在开发中 - 请务必查看Node.js模块列表。
评论
就我个人而言,我最有可能在以下情况下使用Node.js:
- 我想编写一个不使用 HTTP 协议的服务器。
- 我正在对服务器实现进行原型设计。
- 我正在编写一个不需要大量流量的服务器(尽管我从未在匹配的C++实现旁边分析过Node.js实现)。
- 我想活跃在社区中(社区显然发展得相当快)。
评论
当你(或者即使你不是)JavaScript爱好者时,你可以/应该使用Node.js,原因如下:
- 它是一个低级、轻量级和独立的框架,它将 JavaScript 的强大功能带入了服务器端环境。
- 如果你喜欢更高层次的抽象,那么这里有大量的模块和 npm 包管理器,你可以在其中找到各种现成的应用程序。
- 快速/无阻碍的开发过程 - 例如,您不需要大量额外的工具即可开始编写严肃的东西。
- 基于开源的大型社区,充满了爱好者和非常有才华的人。
- 专为创建面向 Web 的实时应用程序而设计 - 这就是(不久的)未来。
评论
因此,我们获得了 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的操作系统库可以为您提供抽象,例如 Express.js 和 now。
如果你想让(缓慢的)高级抽象为你做所有事情,你不想使用Node.js。如果您想要 RAD,则不想使用 Node.js。如果你不能信任一个年轻的平台,你就不想使用Node.js,要么是因为你必须自己编写大量代码来做内置到其他框架中的事情,要么是因为你不能使用Node.js,因为 API 还不稳定,或者它是 sub-1.0 版本。
评论
node.js
php