● 章 Node簡介
1.1 Node的誕生歷程
1.2 Node的命名與起源
1.2.1 為什麼是JavaScript
1.2.2 為什麼叫Node
1.3 Node給JavaScript帶來的意義
1.4 Node的特點
1.4.1 異步I/O
1.4.2 事件與回調函數
1.4.3 單線程
1.4.4 跨平臺
1.5 Node的應用場景
1.5.1 I/O密集型
1.5.2 是否不擅長CPU密集型業務
1.5.3 與遺留繫統和平共處
1.5.4 分布式應用
1.6 Node的使用者
1.7 參考資源
●
●第2章 模塊機制
2.1 CommonJS規範
2.1.1 CommonJS的出發點
2.1.2 CommonJS的模塊規範
2.2 Node的模塊實現
2.2.1 優先從緩存加載
2.2.2 路徑分析和文件定位
2.2.3 模塊編譯
2.3 核心模塊
2.3.1 JavaScript核心模塊的編譯過程
2.3.2 C/C++核心模塊的編譯過程
2.3.3 核心模塊的引入流程
2.3.4 編寫核心模塊
2.4 C/C++擴展模塊
2.4.1 前提條件
2.4.2 C/C++擴展模塊的編寫
2.4.3 C/C++擴展模塊的編譯
2.4.4 C/C++擴展模塊的加載
2.5 模塊調用棧
2.6 包與NPM
2.6.1 包結構
2.6.2 包描述文件與NPM
2.6.3 NPM常用功能
2.6.4 局域NPM
2.6.5 NPM潛在問題
2.7 前後端共用模塊
2.7.1 模塊的側重點
2.7.2 AMD規範
2.7.3 CMD規範
2.7.4 兼容多種模塊規範
2.8 總結
2.9 參考資源
●
●第3章 異步I/O
3.1 為什麼要異步I/O
3.1.1 用戶體驗
3.1.2 資源分配
3.2 異步I/O實現現狀
3.2.1 異步I/O與非阻塞I/O
3.2.2 理想的非阻塞異步I/O
3.2.3 現實的異步I/O
3.3 Node的異步I/O
3.3.1 事件循環
3.3.2 觀察者
3.3.3 請求對像
3.3.4 執行回調
3.3.5 小結
3.4 非I/O的異步API
3.4.1 定時器
3.4.2 process.nextTick()
3.4.3 setImmediate()
3.5 事件驅動與高性能服務器
3.6 總結
3.7 參考資源
●
●第4章 異步編程
4.1 函數式編程
4.1.1 高階函數
4.1.2 偏函數用法
4.2 異步編程的優勢與難點
4.2.1 優勢
4.2.2 難點
4.3 異步編程解決方案
4.3.1 事件發布/訂閱模式
4.3.2 Promise/Deferred模式
4.3.3 流程控制庫
4.4 異步並發控制
4.4.1 bagpipe的解決方案
4.4.2 async的解決方案
4.5 總結
4.6 參考資源
●
●第5章 內存控制
5.1 V8的垃圾回收機制與內存限制
5.1.1 Node與V8
5.1.2 V8的內存限制
5.1.3 V8的對像分配
5.1.4 V8的垃圾回收機制
5.1.5 查看垃圾回收日志
5.2 高效使用內存
5.2.1 作用域
5.2.2 閉包
5.2.3 小結
5.3 內存指標
5.3.1 查看內存使用情況
5.3.2 堆外內存
5.3.3 小結
5.4 內存洩漏
5.4.1 慎將內存當做緩存
5.4.2 關注隊列狀態
5.5 內存洩漏排查
5.5.1 node-heapdump
5.5.2 node-memwatch
5.5.3 小結
5.6 大內存應用
5.7 總結
5.8 參考資源
●
●第6章 理解Buffer
6.1 Buffer結構
6.1.1 模塊結構
6.1.2 Buffer對像
6.1.3 Buffer內存分配
6.2 Buffer的轉換
6.2.1 字符串轉Buffer
6.2.2 Buffer轉字符串
6.2.3 Buffer不支持的編碼類型
6.3 Buffer的拼接
6.3.1 亂碼是如何產生的
6.3.2 setEncoding()與string_decoder()
6.3.3 正確拼接Buffer
6.4 Buffer與性能
6.5 總結
6.6 參考資源
●
●第7章 網絡編程
7.1 構建TCP服務
7.1.1 TCP
7.1.2 創建TCP服務器端
7.1.3 TCP服務的事件
7.2 構建UDP服務
7.2.1 創建UDP套接字
7.2.2 創建UDP服務器端
7.2.3 創建UDP客戶端
7.2.4 UDP套接字事件
7.3 構建HTTP服務
7.3.1 HTTP
7.3.2 http模塊
7.3.3 HTTP客戶端
7.4 構建WebSocket服務
7.4.1 WebSocket握手
7.4.2 WebSocket數據傳輸
7.4.3 小結
7.5 網絡服務與安全
7.5.1 TLS/SSL
7.5.2 TLS服務
7.5.3 HTTPS服務
7.6 總結
7.7 參考資源
●
●第8章 構建Web應用
8.1 基礎功能
8.1.1 請求方法
8.1.2 路徑解析
8.1.3 查詢字符串
8.1.4 Cookie
8.1.5 Session
8.1.6 緩存
8.1.7 Basic認證
8.2 數據上傳
8.2.1 表單數據
8.2.2 其他格式
8.2.3 附件上傳
8.2.4 數據上傳與安全
8.3 路由解析
8.3.1 文件路徑型
8.3.2 MVC
8.3.3 RESTful
8.4 中間件
8.4.1 異常處理
8.4.2 中間件與性能
8.4.3 小結
8.5 頁面渲染
8.5.1 內容響應
8.5.2 視圖渲染
8.5.3 模板
8.5.4 Bigpipe
8.6 總結
8.7 參考資源
●
●第9章 玩轉進程
9.1 服務模型的變遷
9.1.1 石器時代:同步
9.1.2 青銅時代:復制進程
9.1.3 白銀時代:多線程
9.1.4 黃金時代:事件驅動
9.2 多進程架構
9.2.1 創建子進程
9.2.2 進程間通信
9.2.3 句柄傳遞
9.2.4 小結
9.3 集群穩定之路
9.3.1 進程事件
9.3.2 自動重啟
9.3.3 負載均衡
9.3.4 狀態共享
9.4 Cluster模塊
9.4.1 Cluster工作原理
9.4.2 Cluster事件
9.5 總結
9.6 參考資源
●
●0章 測試
10.1 &nbs測試
10.1.1 &nbs測試的意義
10.1.2 &nbs測試介紹
10.1.3 工程化與自動化
10.1.4 小結
10.2 性能測試
10.2.1 基準測試
10.2.2 壓力測試
10.2.3 基準測試驅動開發
10.2.4 測試數據與業務數據的轉換
10.3 總結
10.4 參考資源
●......
內容簡介
本書從不同的視角介紹了Node內在的特點和結構。由首章Node介紹為索引,涉及Node的各個方面,主要內容包含模塊機制的揭示、異步I/O實現原理的展現、異步編程的探討、內存控制的介紹、二進制數據Buffer的細節、Node中的網絡編程基礎、Node中的Web開發、進程間的消息傳遞、Node測試以及通過Node構建產品需要的注意事項。很後的附錄介紹了Node的安裝、調試、編碼規範和NPM倉庫等事宜。
本書適合想深入了解Node的人員閱讀。
2006年至今,我們時常可以看到JavaScript的新聞,剛開始隻是JavaScript引擎性能的提升,到後來發現很多是來自HTML5和Node創造的奇跡。如果隻看表面,很容易讓人感覺這又是一顆衛星。這種現像讓人覺得不可信,所以出現了以下各種版本的誤解。
?Node肯定是幾個前端工程師在實驗室裡搗鼓出來的。
?為了後端而後端,有意思嗎?
?怎麼又發明了一門新語言?
?JavaScript承擔的責任太重了。
?直覺上,JavaScript不應該運行在後端。<......
"