- Node.js+Webpack開發實戰
- 夏磊
- 342字
- 2021-03-26 21:53:45
1.2 Node.js的運行原理
我們已經了解了Node.js組成部分各自的面貌。現在來看看它們是如何相互協作以提供強大的網絡服務功能。Node.js系統如圖1-2所示。

圖1-2
Node.js應用啟動時,會開啟JS線程(主線程)、由libuv提供的線程池(Worker Threads)和一個事件循環(Event Loop)。JS線程負責執行應用代碼,當發現有I/O操作時,直接提交給libuv的線程池并注冊回調函數,不會等待I/O結束后再繼續運行,而是拿到一個狀態后繼續執行,這就是“單線程非阻塞I/O”。
I/O操作結束之后會有一個事件,該事件會放在事件隊列(Event Queue)中,事件循環每次都會檢查是否有事件需要處理,如果有就處理,否則進行下一輪輪詢;如果沒有任何事件需要處理則退出進程。這就是“事件驅動”。
在I/O密集型應用中,主線程只負責提交任務,輪詢結果,耗時的任務執行部分會提交給底層執行,這就是Node.js為什么會有如此高性能的原因。
推薦閱讀
- Learn ECMAScript(Second Edition)
- 極簡算法史:從數學到機器的故事
- 軟件項目管理(第2版)
- 看透JavaScript:原理、方法與實踐
- Java深入解析:透析Java本質的36個話題
- Securing WebLogic Server 12c
- Asynchronous Android Programming(Second Edition)
- PHP+MySQL+Dreamweaver動態網站開發從入門到精通(第3版)
- HTML 5與CSS 3權威指南(第3版·上冊)
- 軟件測試綜合技術
- 物聯網系統架構設計與邊緣計算(原書第2版)
- Docker:容器與容器云(第2版)
- Android應用開發攻略
- Visual FoxPro程序設計教程(第3版)
- Node.js入門指南