近期在看一些Node.js的知識,看完後覺得,一些前面的東西忘記了,於是整理一下,方便自己查閱,也希望對學習Node.js的朋友有些協助; 當然以下只是我個人的觀點和理解,不喜勿噴,也望大神指教。 一、Node.js是什麼 關於這個問題,剛看到它的時候,可能覺得和javascript有關係,沒錯,確實有關係;但是,首先Node.js不是一門語言,與php python perl ruby的 “既是語言又是平台”不同;Node.js也不是一個javascript架構或者javascript類庫,不同於Jquery ExtJS;Node.js是一個可以讓javascript運行在 伺服器端的平台; 二、Node.js特點 Node.js具有以下特點: ①是一個javascript運行環境或者平台 ②依賴於Chrome V8引擎進行代碼解釋 ③基於事件驅動 ④非同步式I/O(非阻塞I/O) ⑤單進程、單線程 ⑥輕量、可伸縮,適用於即時資料互動應用 通過以上的特點,我們可以總結一句話: Node.js是用非同步式I/O和事件驅動,依賴於Chrome的V8引擎進行代碼解釋的javascript運行環境; Node.js最大的特點就是非同步式I/O和事件驅動,對於高並發的解決方案,Node.js摒棄了傳統的多執行緒模式, 使用的是單執行緒模式,對所有的I/O請求都採用非同步式請求的方式; 這裡簡單介紹下,非同步式I/O和事件驅動: 非同步式I/O,又叫非阻塞I/O, 在阻塞狀態下,當線程遇到I/O操作時,會等待I/O操作的完成,從而造成阻塞,而一個線程只能處理一項任務,要想提供輸送量必須通過多線程; 而非阻塞狀態下,不會等待I/O操作的結果返回,繼續執行下一條語句,當結果返回時,I/O以事件的方式通知; Node.js的非同步式I/O由回呼函數完成,事件的回呼函數在遇到I/O請求並且當I/O操作完成時,會發送一個事件 到事件隊列,而Node.js的事件迴圈機制會檢查隊列中有沒有未處理的事件,直到程式結束,所以可以說, Node.js程式由事件迴圈開始,到事件迴圈結束。 三、Node.js的用途 Node.js適合應用在高並發、I/O密集、少量商務邏輯的情境 不適合的情境: 1.計算密集型應用 2.單使用者多任務的程式 3.邏輯十分複雜的事務 4.unicode與國際化