本文参考:Felix Geisendörfer Understanding node.js
nodejs是一个基于V8的JavaScript Runtime平台。 nodejs是众多解释型语言解释器的一种,类似于ruby, python, php, java等。与其他解释器相比,nodejs有许多独特的特性。
Keywords
- Single Thread
- Event Loop/Non-Block
- JavaScript
- V8
- Module
Single Thread
nodejs以单线程的方式的执行程序,因此不会出现多个线程访问同一变量的情况(死锁、锁竞争),不需要复杂、危险的并发编程,这将简化程序的开发,提高开发效率。
Event Loop/Non-Block
nodejs通过事件轮询的方式来实现并发。对于耗时的I/O操作,nodejs保存回调,任务以异步的方式在后台执行,运行环境继续单线程地执行代码,等I/O操作结束,数据可用时,回调方法会被调用。
这种非阻塞的方式避免了时间浪费在耗时的I/O操作上,因引起可以大大提高并发处理能力。
nodejs采用的I/O机制是轻量级的,能最大程度地利用系统的I/O能力。
JavaScript
使用者众多,使用广泛,GitHub上最受欢迎。
大量的JavaScript库。
前端和后端语言统一。
易学,易上手。
V8
Chrome之所以成为最快的浏览器,就是因为它采用了V8作为JavaScript解释器。一直以来,Google在不断地优化V8引擎,它已经成为最快的动态语言解释器之一。
Module
nodejs对JS作了一些优化和扩展。并提供了一些额外的API,如文件系统、网络访问等。
同时,开发者也很容易为nodejs编写新的模块库。