介绍
什么是Node.js?
Node.js是一个基于谷歌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成为软件架构师首选的一些重要功能。
Asynchronous and Event Driven - Node.js库的所有API都是异步的,即非阻塞的。 它本质上意味着基于Node.js的服务器永远不会等待API返回数据。 服务器在调用它之后移动到下一个API,并且Node.js事件的通知机制帮助服务器从先前的API调用获得响应。
Very Fast - 基于谷歌Chrome的V8 JavaScript引擎,Node.js库的代码执行速度非常快。
Single Threaded but Highly Scalable - Node.js使用带有事件循环的单线程模型。 事件机制可帮助服务器以非阻塞方式进行响应,并使服务器具有高度可伸缩性,而传统服务器则创建有限的线程来处理请求。 Node.js使用单线程程序,同一程序可以为比Apache HTTP Server等传统服务器提供更多请求的服务。
No Buffering - Node.js应用程序从不缓冲任何数据。 这些应用程序只是以块的形式输出数据。
谁使用Node.js?
以下是github wiki上的链接,其中包含使用Node.js的项目,应用程序和公司的详尽列表。 此列表包括eBay,通用电气,GoDaddy,微软,PayPal,Uber,Wikipins,Yahoo!和Yammer等等。
概念 (Concepts)
下图描绘了Node.js的一些重要部分,我们将在后续章节中详细讨论。
在哪里使用Node.js?
以下是Node.js证明自己是完美技术合作伙伴的领域。
- I/O绑定应用程序
- 数据流应用程序
- 数据密集型实时应用程序(DIRT)
- 基于JSON API的应用程序
- 单页应用程序
哪里不使用Node.js?
不建议将Node.js用于CPU密集型应用程序。