深入浅出NodeJS笔记(一)

一、Node与Chrome的异同

Node与Chrome结构很相似,Node与Chrome都使用的是V8作为JavaScript引擎。Node不处理UI,因此没有Chrome中的布局引擎WebKit。Node与Chrome都是事件驱动的异步架构

二、Node特点

Javascript是基于prototypal原型继承模型,而非是类继承模型。Node没有修改JavaScript的特性,仍然是基于作用于和原型链

Node具有的特性:异步I/O,事件与回调函数,单线程,跨平台。

在JavaScript中,将函数视为一等公民对待,可以将函数作为对象传递给方法作为实参进行调用。与其他Web后台编程语言相比,Node除了异步和事件之外,回调函数是一大特色。

Node保持了JavaScript单线程的特点,与JavaScript外的线程无法共享任何状态。Node中解决单线程中的耗时计算问题的方法是:child_process。JavaScript前台解决方法是Web Workers。单线程的弱点也是很明显的:无法利用多核CPU;错误会引起整个应用退出,应用的健壮性值得考虑;大量计算占用CPU导致无法继续调用异步I/O。

Node的跨平台是通过libuv实现的。libuv是一个高效的事件驱动的I/O库,为Windows和Unix平台提供相同的API。libuv在线文档http://nikhilm.github.io/uvbook/index.html

三、Node的应用场景

I/O密集型。Node面向网络切擅长并行I/O,能够有效地组织起更多的硬件资源,从而提供更多好的服务。I/O密集的优势主要在于Node利用事件循环的处理能力,而不是为每一个请求服务启动一个线程,资源占用极少。

CPU密集型,需要进行合理调度。V8执行效率很高,Node解决了在单线程上CPU与I/O之间阻塞无法重叠利用的问题。Node没有提供多线程支持,但是有两种充分利用CPU的方式:Node可以通过编写C/C++扩展的方式更高小地利用CPU;可以通过子线程的方式,将一部分Node进程当作常驻服务进程用于计算。

四、Node的使用者

使用者对于Node的倚重点有以下几个方面:前后端编程语言环境统一;Node带来的高性能I/O用于实时应用并行I/O使得使用者可以更高效地利用分布式环境;并行I/O,有效利用稳定接口提升Web渲染能力;云计算平台提供Node支持;游戏开发领域;工具类应用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章