深入淺出Node.js

深入淺出Node.js

《深入淺出Node.js》是人民郵電出版社2013年出版的圖書,由朴靈編著。該書從不同的視角介紹了Node內在的特點和結構。

基本介紹

  • 書名:深入淺出Node.js
  • 作者:朴靈
  • 譯者熊節
  • ISBN:9787115335500
  • 類別:圖書 > 計算機與網際網路 > 程式語言與程式設計
  • 頁數:348
  • 出版社人民郵電出版社
  • 出版時間:2013-12-01
  • 裝幀:平裝
  • 開本:16開
內容簡介,作者簡介,作品目錄,

內容簡介

《深入淺出Node.js》由首章Node介紹為索引,涉及Node的各個方面,主要內容包含模組機制的揭示、異步I/O實現原理的展現、異步編程的探討、記憶體控制的介紹、二進制數據Buffer的細節、Node中的網路編程基礎、Node中的Web開發、進程間的訊息傳遞、Node測試以及通過Node構建產品需要的注意事項。最後的附錄介紹了Node的安裝、調試、編碼規範和NPM倉庫等事宜。

作者簡介

朴靈,真名田永強,文藝型碼農,就職於阿里巴巴數據平台,資深工程師,Node.js布道者,寫了多篇文章介紹Node.js的細節。活躍於CNode社區,是線下會議NodeParty的組織者和JSConfChina(滬JS和京JS)的組織者之一。熱愛開源,多個Node.js模組的作者。叩首問路,碼夢為生。

作品目錄

第1章 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 參考資源
第10章 測試 
10.1 單元測試 
10.1.1 單元測試的意義 
10.1.2 單元測試介紹 
10.1.3 工程化與自動化 
10.1.4 小結 
10.2 性能測試 
10.2.1 基準測試 
10.2.2 壓力測試 
10.2.3 基準測試驅動開發 
10.2.4 測試數據與業務數據的轉換 
10.3 總結 
10.4 參考資源
第11章 產品化 
11.1 項目工程化 
11.1.1 目錄結構 
11.1.2 構建工具 
11.1.3 編碼規範 
11.1.4 代碼審查 
11.2 部署流程 
11.2.1 部署環境 
11.2.2 部署操作 
11.3 性能 
11.3.1 動靜分離 
11.3.2 啟用快取 
11.3.3 多進程架構 
11.3.4 讀寫分離 
11.4 日誌 
11.4.1 訪問日誌 
11.4.2 異常日誌 
11.4.3 日誌與資料庫 
11.4.4 分割日誌 
11.4.5 小結 
11.5 監控報警 
11.5.1 監控 
11.5.2 報警的實現 
11.5.3 監控系統的穩定性 
11.6 穩定性 
11.7 異構共存 
11.8 總結 
11.9 參考資源
附錄A 安裝Node 
A.1 Windows系統下的Node安裝 
A.2 Mac系統下Node的安裝 
A.3 Linux系統下Node的安裝 
A.4 總結 
A.5 參考資源
附錄B 調試Node 
B.1 Debugger 
B.2 Node Inspector 
B.2.1 安裝Node Inspector 
B.2.2 錯誤堆疊 
B.3 總結
附錄C Node編碼規範 
C.1 根源 
C.2 編碼規範 
C.2.1 空格與格式 
C.2.2 命名規範 
C.2.3 比較操作 
C.2.4 字面量 
C.2.5 作用域 
C.2.6 數組與對象 
C.2.7 異步 
C.2.8 類與模組 
C.2.9 註解規範 
C.3 最佳實踐 
C.3.1 衝突的解決原則 
C.3.2 給編輯器設定檢測工具 
C.3.3 版本控制中的hook 
C.3.4 持續集成 
C.4 總結 
C.5 參考資源
附錄D 搭建局域NPM倉庫 
D.1 NPM倉庫的安裝 
D.1.1 安裝ErlangCouchDB 
D.1.2 搭建NPM倉庫 
D.2 高階套用 
D.2.1 鏡像倉庫 
D.2.2 私有模組套用 
D.2.3 純私有倉庫 
D.3 總結 
D.4 參考資源

相關詞條

熱門詞條

聯絡我們