Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js是事件驱动,非阻塞I/O的。所以它再处理高并发,I/O密集的场景下性能优势明显,如web。
对比CPU密集和I/O密集:
CPU密集就是计算居多的程序,如压缩,加密等的运算很多的。
I/O密集就是存储操作多,网络操作,数据库操作之类的。
web中常见的场景有静态资源读取,数据库操作,渲染页面。都是频繁的I/O操作。
我们经常说的高并发就是指单位时间内访问量很大。
apache服务器处理高并发是利用新加线程。进程有上限,达到上限时需要等待。I/O成为造成等待的主要原因。可能造成CPU的浪费。
node.js一个CPU开一个进程,一个进程内只有一个线程。单线程只针对主进程(负责发起请求),I/O操作系统底层是多线程的(跟node.js没关)。node.js不负责I/O。node.js在多核的机器上就有多个进程,但是每个进程都只对应一个线程。
node.js在高并发和I/O密集的web的场景表现很好。在CPU密集的场景下表现不好。
node.js在本地代码构建下也十分有用,实现代码的转化。但是不是因为性能的原因,是因为它的语法优势,与前端更加适合。
node.js也常常用来开发实用工具,同样往往不是考虑到性能。