1.简单地说Node.js就是运行在服务器端的javascript。node.js是一个基于Chrome Javascript运行时建立的一个平台。是一个事件驱动I/O服务端JavaScript环境(由C++编写),基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
2. Node.js工作原理
3. 它是一个Javascript运行环境(C++实现)、依赖于Chrome V8引擎进行代码解释、事件驱动、非阻塞I/O单进程,单线程、模块化编程、事件轮询(event loop)。
4. Node.js优点: 高并发,可以应付百万级并发 ;适合I/O密集型应用 缺点:不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起
5. 适合node.js的场景
(1)RESTful API
这是NodeJS最理想的应用场景,可以处理数万条连接,本身没有太多的逻辑,只需要请求API,组织数据进行返回即可。它本质上只是从某个数据库中查找一些值并将它们组成一个响应。由于响应是少量文本,入站请求也是少量的文本,因此流量不高,一台机器甚至也可以处理最繁忙的公司的API需求。
(2)统一Web应用的UI层
(3)大量Ajax请求的应用
例如个性化应用,每个用户看到的页面都不一样,缓存失效,需要在页面加载的时候发起Ajax请求,NodeJS能响应大量的并发请求。总而言之,NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。
6. 应用实例 (花瓣网 淘宝开放平台API调用Nodejs版本实现 Cnode.org社区 网易开源Node.js游戏服务器框架pomepo NodeOS(操作系统))
7 Event Loop
Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。
JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。
本文参考C. Aaron Cois的《Understanding The Node.js Event Loop》