0前言 陸續的用Node已經一年多了,已經用node寫了幾個的項目,也該是總結node學習的過程了 1.Node是啥? Node.js是一使用JavaScript作為開發語言,運行在伺服器端的Web伺服器,也就是說是 JavaScript的服務端運行環境,這麼說其實還不嚴謹。node除了實現了js的 ...
0前言
陸續的用Node已經一年多了,已經用node寫了幾個的項目,也該是總結node學習的過程了
1.Node是啥?
Node.js是一使用JavaScript作為開發語言,運行在伺服器端的Web伺服器,也就是說是 JavaScript的服務端運行環境,這麼說其實還不嚴謹。node除了實現了js的運行環境外,還用C++實現了內置的庫
2.與瀏覽器端的js運行環境的區別
JavaScript是一種解釋型腳本語言,需要運行時環境來執行代碼,而這個運行時環境就是Google開發的V8引擎。不管是瀏覽器端的js還是還是node環境的js執行環境,都是基於V8引擎實現的。
下圖可以看到node環境和瀏覽器環境的結構。可以看到,Node中除了不需要頁面解析引擎外,與瀏覽器的區別就在於中間層的實現
3.Node與其他編程語言相比有哪些特點
3.1 單線程
JavaScript在瀏覽器中運行時,js運行和頁面渲染共用同一線程,也就是說js運行和頁面渲染是相互阻塞的,這也證明瞭,在前端實踐中需要把js放在最後執行的原因。
單線程編程模型的好處是,不用擔心記憶體狀態的同步問題和程式上下文切換時的開銷
3.2非同步I/O
在瀏覽器編程中,需要和服務端打交道時,因為網路存在波動無法準確的預知響應時間,所以只能採用事件加回調的方式來實現,如ajax的請求的實現,只有當網路響應時才會執行註冊的回調函數。如下圖node的文件讀取操作
3.3跨平臺
node使用libuv庫實現了跨平臺運行的特性,libuv封裝了多平的系統調用,抹平了系統之間的差異,在程式調用成抽象成統一的調用介面,使node程式能夠在多平臺實現相同的執行效果
4.node適合做什麼工作
I/O密集型應用,如常見的Web應用,實時通訊伺服器等。由於node使用js的事件+回調的機制來實現IO訪問,並且不會阻塞IO調用
中間層應用,作為網關代理層轉發、代理、整合已有的服務和資源,快速實現產品上線、版本迭代,實現公司業務的“小步快跑”