1. 程式人生 > >Node.js 基本概念介紹

Node.js 基本概念介紹

Node.js 是執行在服務端的JavaScript,基於Chrome JavaScript執行時建立的一個平臺,是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行JavaScript的速度非常快,效能非常好。

Node.js特點

1、非同步I/O

觀察者:隨著使用者的點選或者載入某些檔案時產生,這些產生的事件都有相應的觀察者,如:檔案I/O觀察者、網路I/O觀察者等。觀察者將事件進行了分類。每個事件迴圈中有一個或多個觀察者,而判斷是否有事件要處理的過程就是向這些觀察者詢問是否有要處理的事件。

事件迴圈:程序啟動時,Node會建立一個類似while(true)的迴圈,每執行一次迴圈體的過程稱之為Tick,每個Tick的過程就是檢視是否有事件待處理,如果有,就取出事件及相關的回撥函式。如果存在關聯的回撥函式就執行它們,然後進入下一個迴圈,如果不再有事件處理,就退出程序。事件迴圈是一個典型的生產者/消費者模型。非同步I/O、網路請求等則是事件的生產者,源源不斷為Nodejs提供不同型別的事件,這些事件被傳遞到相應的觀察者那裡,事件迴圈則從觀察者那裡取出事件並處理。在Window下,事件迴圈基於IOCP建立,在*nix下則基於多執行緒建立。

 

請求物件:從JavaScript發起呼叫到核心執行完I/O操作的過渡過程中,存在一種中間產物,它叫做請求物件。

2、事件驅動

3、單執行緒

JavaScript與其餘執行緒是無法共享任何狀態的,單執行緒最大的好處是不用像多執行緒那樣處處在意狀態的同步問題,這裡沒有死鎖的存在,也沒有執行緒上下文交換所帶來的效能上的開銷。弱點是無法利用多核CPU、錯誤會引起整個應用退出、大量計算佔用CPU導致無法繼續呼叫非同步I/O。

 

非同步I/O整體流程圖