前些天使用到了一个Javascript库,需要用到Node.js,于是顺道了解了下Node.js。

Node.js创始人Ryan Dahl在JSCON上的演示文稿中说Node.js是

Evented Server-side Javascript

即Node.js可以使你用Javascript在服务端以事件驱动的非阻塞IO模型进行编程。基本上任何语言都可以使用这种模型编程,那为什么Node.js如此特殊呢?

Node.js是一整套Javascript的运行时环境,它基于Google Chrome的V8引擎。V8是一个性能出色的虚拟机,扩展性良好,这基本上保障了Node.js的品味。通过V8的扩展性,Node.js为Javascript添加了许多系统级的API,使得Javascript与Ruby那样全面的编程语言更加接近。

可以说Node.js是前端工程师的福音,他们可以迈向所谓的full-stack工程师。

我觉得Node.js可能会遇到的问题:

  • V8并不是为服务端应用优化的,可能会有些影响性能的问题,比如垃圾收集策略会影响Node.js的大文件服务请求。
  • Node.js采用单线程模型,在多核CPU时代不知道能否吃得开

总之,Web应用类型那么多,Node.js可以试水的地方应该是很多的。