Node.js应用开发
上QQ阅读APP看书,第一时间看更新

1.1.3 Node.js特点及应用场景

1.强大的标准类库

Node.js最大的特性是它的标准类库,主要由二进制类库和核心模块两部分组成。二进制类库包括Libuv,它为网络和文件系统提供了快速的时间轮循和非阻塞l/O,同时拥有HTTP类库,可以快速构建HTTP客户端和服务器。Node.js的核心模块主要由JavaScript编写,方便用户在需要时阅读源码。

2.灵活的包管理器

Node.js有着强大而灵活的包管理器(Node Package Manager,NPM),目前已经有上万个第三方模块,其中有网站开发框架,以及MySQL、PostgreSQL、MongoDB等数据库接口,有模板语言解析、CSS 生成工具、邮件、加密、图形、调试支持,甚至还有图形用户界面和操作系统APl工具。

3.内置HTTP服务器

Node.js可以作为服务器向用户提供服务,与PHP、Python、Ruby on Rails相比,它跳过了Apache、Nginx等HTTP服务器,直接面向前端开发。Node.js的许多设计理念与经典架构(如LAMP)有很大的不同,它能提供强大的伸缩能力。

4.异步式I/O与事件驱动架构设计

Node.js最大的特点就是采用异步l/O与事件驱动的架构设计。传统的高并发架构方案通常是多线程模式,而 Node.js 使用的是单线程模型,在执行过程中只启动一个线程来运行代码,即Node.js进程在同一时刻只会处理一个事件,程序在执行时进入事件循环等待下一个事件到来,每个异步式l/O请求完成后会被推送到事件队列,等待程序进程进行处理。每当遇到耗时的l/O操作,比如文件读写、网络请求,则将耗时操作丢给底层的事件循环去执行,无须等待即可继续执行下面的代码。当底层的事件循环执行完耗时的l/O时,会执行回调函数来作为通知。这样做的好处是:CPU和内存在同一时间集中处理一件事,同时尽可能并行执行耗时的l/O操作。

基于以上特性,Node.js适合开发下列应用。

(1)Web服务APl。

(2)实时多人游戏。

(3)后端的Web服务。

(4)基于Web的应用。

(5)多客户端的通信。