Node.js 介绍
什么是Node.js
Node.js是建立在Google Chrome的JavaScript引擎(V8引擎)上的服务器端平台。Node.js由Ryan Dahl于2009年开发,其最新版本是v0.10.36。Node.js的定义如下:
Node.js是一个建立在Chrome的JavaScript运行时上的平台,用于轻松构建快速和可扩展的网络应用程序。Node.js使用事件驱动的、非阻塞的I/O模型,使其轻巧高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
Node.js是一个开源的跨平台运行环境,用于开发服务器端和网络应用程序。Node.js应用程序使用JavaScript编写,并可以在OS X、Microsoft Windows和Linux上在Node.js运行时中运行。
Node.js还提供了丰富的各种JavaScript模块库,极大地简化了使用Node.js开发Web应用程序的过程。
Node.js = Runtime Environment + JavaScript Library
Node.js的特点
以下是一些重要的特点,使得Node.js成为软件架构师的首选。
- 异步和事件驱动 - Node.js库的所有API都是异步的,也就是非阻塞的。这意味着Node.js服务器不会等待API返回数据。在调用完API后,服务器会继续执行下一个API,并通过Node.js的事件通知机制来获取之前API调用的响应。
-
非常快速 - Node.js库是基于谷歌Chrome的V8 JavaScript引擎构建的,所以执行代码非常快速。
-
单线程但高度可扩展 - Node.js使用单线程模型和事件循环。事件机制帮助服务器以非阻塞的方式响应,与传统服务器创建有限线程以处理请求的方式相比,使服务器具有高度可扩展性。Node.js使用单线程程序,同一个程序可以为更多的请求提供服务,而传统的服务器(如Apache HTTP Server)不能做到这一点。
-
无缓冲区 - Node.js应用程序不会缓冲任何数据。这些应用程序只是按块输出数据。
-
许可证 - Node.js发布在MIT许可证下。
谁在使用Node.js
以下是包含使用Node.js的项目、应用和公司的Github Wiki链接。其中包括eBay、通用电气、GoDaddy、微软、PayPal、优步、Wikipins、雅虎!和Yammer等等。
- 使用Node.js的项目、应用和公司
概念
下图描述了Node.js的一些重要部分,我们将在接下来的章节中详细讨论。
在哪些领域可以使用Node.js
以下是Node.js作为完美技术伙伴展现的领域:
- 面向I/O的应用程序
- 数据流应用程序
- 数据密集型实时应用程序(DIRT)
- 基于JSON API的应用程序
- 单页面应用程序
在哪些领域不建议使用Node.js
不建议在CPU密集型应用程序中使用Node.js。