作为异步事件驱动的 JavaScript 运行时,Node.js 旨在构建可扩展的网络应用程序。

Node.js 在设计上类似于 Ruby 的 Event Machine 和 Python 的 Twisted 等系统,并受其影响。Node.js 将事件模型更进一步。它将事件循环呈现为运行时构造,而不是库。在其他系统中,总是有一个 blocking 调用来启动事件循环。通常,行为是通过脚本开头的回调定义的,而服务器是通过 EventMachine::run() 等阻塞调用来启动的。在 Node.js 中,没有这样的 start-the-event-loop 调用。Node.js 在执行 input 脚本后进入事件循环。Node.js 当没有更多回调要执行时退出事件循环。此行为类似于浏览器 JavaScript – 事件循环对用户隐藏。

HTTP 是 Node.js 中的一等公民,在设计时考虑了流和低延迟。这使得 Nodejs 非常适合 Web 库或框架的基础。

Node.js设计为无线程并不意味着您不能在环境中利用多个内核。可以使用我们的 child_process.fork() API 生成子进程,并且其设计易于通信。集群模块基于同一接口构建,它允许您在进程之间共享套接字,以实现内核上的负载均衡。