Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm,是全球最大的開源庫生態系統。
所以 Node 並不是一門語言,而是一個 runtime,也就是我們經常說的執行時,和我們非常熟悉的 JRE—— Java Runtime Environment 非常類似。如同瀏覽器是 JavaScript 的執行時,我們有時候也會稱之為宿主環境或者執行環境,Node 是 JavaScript 在伺服器端的一個執行時。
Node 使用了事件驅動和非阻塞的 I/O 模型,使 Node 輕量高效,非常適合 I/O 密集的 Web 場景。
很多語言是依賴的多程序、執行緒解決高併發,一個執行緒處理一條使用者請求,處理完成了釋放執行緒,在阻塞 I/O 模型下, I/O 期間該使用者執行緒所佔用的 CPU 資源(雖然十分微量,大部分交給了 DMA)什麼都不做,等待 I/O,然後響應使用者,而且開啟多個程序/執行緒 CPU 切換 Context 的時間也十分可觀。
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。Node.js 的包管理器 npm,是全球最大的開源庫生態系統。
所以 Node 並不是一門語言,而是一個 runtime,也就是我們經常說的執行時,和我們非常熟悉的 JRE—— Java Runtime Environment 非常類似。如同瀏覽器是 JavaScript 的執行時,我們有時候也會稱之為宿主環境或者執行環境,Node 是 JavaScript 在伺服器端的一個執行時。
Node 使用了事件驅動和非阻塞的 I/O 模型,使 Node 輕量高效,非常適合 I/O 密集的 Web 場景。
很多語言是依賴的多程序、執行緒解決高併發,一個執行緒處理一條使用者請求,處理完成了釋放執行緒,在阻塞 I/O 模型下, I/O 期間該使用者執行緒所佔用的 CPU 資源(雖然十分微量,大部分交給了 DMA)什麼都不做,等待 I/O,然後響應使用者,而且開啟多個程序/執行緒 CPU 切換 Context 的時間也十分可觀。