作者序
本書寫給那些打算或正在使用Node.js(簡稱Node,後文均用此簡稱)建立Web 應用的開發者。眾所皆知,JavaScript 的靈活好用以及V8 引擎的加速,再加上活躍的社區支援,使得用Node 開發應用的成本低,收益大。2015 年ES6 標準的確立,為JavaScript 成為企業級開發語言掃除了不確定性。本書的選材契合這個領域最新的技術進展,深淺適宜地介紹了Node 技術堆疊的全貌。
全書共分9 章。第1 章概述,介紹Node 非同步實現的原理,涵蓋Node實現非同步的兩種方式。這部分參考了Node 原始程式,以求邏輯清晰與內容充實。第2 章∼第7 章是站在JavaScript 的角度,介紹了用Node開發應用的各方面,包含編輯與偵錯、測試技術、Docker 部署、模組機制、V8 引擎與程式最佳、Promise 和ES6 generator 等內容。第8 章介紹LoopBack 開放原始碼架構的使用。本書沒有介紹Express(可能讀者
早已熟悉),因為本書希望為讀者引薦一個更加強大好用的企業級Web架構。第9 章則從C++ 的角度介紹Node 擴充模組的撰寫,這部分適合那些想要了解V8 引擎的讀者,可以說C++ 是Node 技術堆疊的基礎。
本書希望向讀者呈現組成Node 技術堆疊的JavaScript 和C++ 全貌。
本書不假設讀者有Node 研發經驗,但需熟悉JavaScript。如果讀者最近才接觸程式設計,建議選一本更初階的教學書,或先到W3School(http://www.w3school.com/js/index.asp)上看看。本書每一章都有原始程式範例,這些範例大部分可以在Node 支援的任何系統上執行,但也有例外。建議使用本書第3 章介紹的容器。
飲半盞湖水,當知江河滋味;拾一片落葉,盡享人間秋涼。希望本書成為讀者熟練掌握Node 技術堆疊的那一盞湖水、一片落葉。
✤ 致謝
感謝CNode 社區,它提供一個非常好的平台,本書的一些章節從中獲得了積極的回饋,使筆者有了繼續寫下去的動力。劉曉蓮同學審閱本書的初稿,提出的一些見解,使得本書在內容安排上更合理,更容易看懂,在此表示感謝。
筆者的一些同事也閱讀了部分初稿並列出積極的回饋,在此一併謝過!
作者電子郵件 classfellow@qq.com
本書寫給那些打算或正在使用Node.js(簡稱Node,後文均用此簡稱)建立Web 應用的開發者。眾所皆知,JavaScript 的靈活好用以及V8 引擎的加速,再加上活躍的社區支援,使得用Node 開發應用的成本低,收益大。2015 年ES6 標準的確立,為JavaScript 成為企業級開發語言掃除了不確定性。本書的選材契合這個領域最新的技術進展,深淺適宜地介紹了Node 技術堆疊的全貌。
全書共分9 章。第1 章概述,介紹Node 非同步實現的原理,涵蓋Node實現非同步的兩種方式。這部分參考了Node 原始程式,以求邏輯清晰與內容充實。第2 章∼第7 章是站在JavaScri...
目錄
前言
Chapter 01 Node 非同步程式設計範式
1.1 同步與非同步的比較
1.2 Node 非同步的實現
1.3 事件驅動
Chapter 02架設自己的開發環境
2.1 Node 的編譯與安裝
2.2 開發與偵錯
2.3 單元測試
Chapter 03使用Docker 部署Node 服務
3.1 Docker 基礎
3.2 在Docker 中執行Node
3.3 匯出設定好的容器
Chapter 04 Node 模組
4.1 程式入口
4.2 VM 模組
4.3 模組載入與快取
4.4 模組分類
4.5 正確匯出模組
4.6 小心使用全域變數
Chapter 05 V8 引擎
5.1 JavaScript 程式的編譯與最佳化
5.2 垃圾回收與記憶體控制
Chapter 06 Promise 物件
6.1 Promise 的含義
6.2 基本用法
6.3 then 的鏈式寫法
6.4 bluebird 函數庫
Chapter 07用ES6 Generator 解決回呼金字塔
7.1 Node 非同步實現流程
7.2 用Generator 實現非同步呼叫與多平行處理
7.3 嚴格模式下執行
7.4 了解執行過程
7.5 本章結語
Chapter 08 LoopBack 開放原始碼架構
8.1 安裝與執行
8.2 路由與許可權控制
8.3 增加新模型
8.4 初始化資料庫
8.5 鉤子機制
8.6 中介軟體
8.7 模型關係
8.8 使用cluster 模式執行服務
Chapter 09撰寫C++ 擴充
9.1 使用C++ 撰寫擴充模組
9.2 執行緒模型與CPU 密集型工作
9.3 執行緒物件
9.4 本章結語
Appendix A JavaScript 嚴格模式
Appendix B JavaScript 編碼標準
前言
Chapter 01 Node 非同步程式設計範式
1.1 同步與非同步的比較
1.2 Node 非同步的實現
1.3 事件驅動
Chapter 02架設自己的開發環境
2.1 Node 的編譯與安裝
2.2 開發與偵錯
2.3 單元測試
Chapter 03使用Docker 部署Node 服務
3.1 Docker 基礎
3.2 在Docker 中執行Node
3.3 匯出設定好的容器
Chapter 04 Node 模組
4.1 程式入口
4.2 VM 模組
4.3 模組載入與快取
4.4 模組分類
4.5 正確匯出模組
4.6 小心使用全域變數
Chapter 05 V8 引擎
5.1 JavaScript 程式的編譯與最佳化
5.2 垃圾回收與記憶體控制
Chapter 06 Promise 物件
6.1 Promise...