深入淺出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支持;遊戲開發領域;工具類應用

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