Node.js - 简介

什么是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成为软件架构师首选的一些重要功能.

  • 异步和事件驱动 :  Node.js库的所有API都是异步的,即非阻塞的.它实质上意味着基于Node.js的服务器永远不会等待API返回数据.服务器在调用它之后移动到下一个API,并且Node.js事件的通知机制帮助服务器从先前的API调用中获得响应.

  • 非常快 : 基于Google Chrome的V8 JavaScript引擎构建,Node.js库的代码执行速度非常快.

  • 单线程但高度可扩展  : 去; Node.js使用带有事件循环的单线程模型.事件机制有助于服务器以非阻塞方式响应,并使服务器具有高度可伸缩性,而传统服务器则创建有限的线程来处理请求. Node.js使用单线程程序,同一程序可以为比Apache HTTP Server等传统服务器提供更多请求的服务.

  • 没有缓冲 :  Node.js应用程序从不缓冲任何数据.这些应用程序只是以块的形式输出数据.

  • 许可证 :  Node.js在 MIT许可下发布.

谁使用Node.js?

以下是github wiki上的链接,其中包含正在使用的项目,应用程序和公司的详尽列表Node.js的这个列表包括eBay,通用电气,GoDaddy,微软,PayPal,Uber,Wikipins,Yahoo!和Yammer等等.

  • 使用节点项目,应用程序和公司

概念

下图描绘了Node.js的一些重要部分我们将在后续章节中详细讨论.

Node.js Concepts

在哪里使用Node.js?

以下是Node.js证明自己是完美技术合作伙伴的领域.

  • I/O绑定应用程序

  • 数据流应用程序

  • 数据密集型实时应用程序(DIRT)

  • 基于JSON API的应用程序

  • 单页应用程序

哪里不使用Node.js?

不建议将Node.js用于CPU密集型应用程序.