Node.js+Webpack开发实战
上QQ阅读APP看书,第一时间看更新

1.3 Node.js的应用场景

1.3.1 Node.js优缺点

在介绍应用场景之前,需要了解一下Node.js的利弊。只有在合适的场景下使用Node.js,才能达到高性能。

Node.js优点:

· 事件驱动、异步编程,在I/O密集型场景下有着极高的性能。

· 轻量高效,资源占用率低。

· 使用JavaScript(JS)作为应用层语言,语言门槛低,对于拥有JS基础的人来说,几乎没有门槛。

Node.js缺点:

· 单进程,一旦JS线程出现未处理的错误,进程会退出,服务会终止。

· 单线程(特指JS线程),一旦JS线程上出现耗时的CPU计算(加解密之类的计算),JS线程将出现阻塞,会拖慢事件轮询。

1.3.2 应用场景

由于较低的语言门槛以及强大的I/O处理能力,大致有以下场景是Node.js能够胜任的。

1.Restful API

这是Node.js最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要调用请求API、组织数据进行返回即可。它本质上只是从某个数据库或缓存中查找一些值并将它们组成一个响应。由于响应是少量的文本,入站请求也是少量的文本,因此流量不高,甚至一台机器也可以处理最繁忙的API需求。社区有Koa、Express、hapi等框架提供该功能。

2.实时WebSocket应用

大量用户同时在线,互相收发数据,但是几乎不需要对数据进行处理,Node.js只需要接收数据然后转发。社区有著名的socket.io库来提供WebSocket功能。

3.前端工具链

由于采用的语言是JavaScript,并且拥有大量的第三方模块,在前端工程师手里可以开发一整套前端工具链,包括压缩、混淆、模块化等。比如业界著名的Webpack。

4.桌面开发

基于开源的Chromium和Node.js,开发者可以通过HTML/CSS/JS来构建桌面端应用程序,业界著名的有Electron和node-webkit。