《Node.js硬實戰:115個核心技巧》一書原作者Alex R. Young(亞歷克斯·榮)、Marc Harter(馬克·哈特),中文版由承竹、慕陶、邱娟、達峰譯,電子工業出版社2017年1月出版
基本介紹
- 書名:Node.js硬實戰:115個核心技巧
- 作者:【美】Alex R. Young(亞歷克斯·榮) 【美】Marc Harter(馬克·哈特)
- 譯者:承竹 慕陶 邱娟 達峰
- ISBN:978-7-121-30402-6
- 頁數:486
- 定價:109.90
- 出版社:電子工業出版社
- 出版時間:2017年1月
- 開本:16開
內容提要,目錄,
內容提要
《Node.js 硬實戰:115 個核心技巧》是一本面向實戰的Node.js 開發進階指南。作為資深專家,《Node.js 硬實戰:115 個核心技巧》作者獨闢蹊徑,將著眼點放在Node.js 的核心模組和網路套用,通過精心組織的豐富實例,向讀者充分展示了Node.js 強大的並發處理能力,讀者從中可真正掌握Node 的核心基礎與高級技巧。《Node.js 硬實戰:115 個核心技巧》總共有三部分內容,第一部分是Node.js 的基礎核心,涉及Buffer、流、網路和進程等相關知識;第二部分是項目實踐,涉及測試、Web 開發、調試,生產環境等重要話題;第三部分則完整創建了一個Node.js 模組。每部分涉及的技術都有詳細講解及注釋詳盡的示例代碼,以幫助讀者們更好地理解要點及其套用。
《Node.js 硬實戰:115 個核心技巧》適合有一定JavaScript 基礎,追求在Node.js 上更進一步的開發者。
目錄
第一部分Node 基礎
1 入門. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Node 入門3
1.1.1 為什麼使用Node 3
1.1.2 Node 的主要特性5
1.2 構建一個Node 套用7
1.2.1 創建一個新的Node 項目8
1.2.2 創建一個流的類9
1.2.3 使用流10
1.2.4 編寫測試11
1.3 總結13
2 全局變數:Node 環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 模組16
技巧1 安裝與載入模組16
技巧2 創建與管理模組17
技巧3 載入一組相關的模組20
技巧4 使用路徑22
2.2 標準I/O 以及console 對象23
技巧5 標準I/O 流的讀寫24
技巧6 列印日誌訊息25
技巧7 基準測試27
2.3 作業系統與命令行29
技巧8 獲取平台信息29
技巧9 傳遞命令行參數30
技巧10 退出程式31
技巧11 回響信號量33
2.4 使用timer 延遲執行35
技巧12 通過setTimeout 延遲執行函式35
技巧13 通過定時器定時調用回調函式37
技巧14 安全的操作異步接口38
2.5 總結41
3 Buffers:使用比特、位元組以及編碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1 修改數據編碼44
技巧15 Buffer 轉換為其他格式44
技巧16 使用Buffers 來修改字元串編碼46
3.2 二進制檔案轉換為JSON 49
技巧17 使用Buffer 來轉換原始數據49
3.3 創建你自己的二進制協定65
技巧18 創建自己的網路協定65
3.4 總結71
4 Events:玩轉EventEmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1 基礎用法73
技巧19 從EventEmitter 繼承73
技巧20 混合EventEmitter 76
4.2 異常處理78
技巧21 管理異常78
技巧22 通過domains 管理異常80
4.3 高級模式82
技巧23 反射82
技巧24 探索EventEmitter 85
技巧25 組織事件名稱87
4.4 第三方模組以及擴展88
技巧26 EventEmitter 的替代方案89
4.5 總結91
5 流:最強大和最容易誤解的功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.1 流的介紹94
5.1.1 流的類型94
5.1.2 什麼時候使用流94
5.1.3 歷史95
5.1.4 第三方模組中的流96
5.1.5 流繼承事件97
5.2 內置流98
技巧27 使用內置的流來實現靜態web 伺服器98
技巧28 流的錯誤處理101
5.3 第三方模組和流102
技巧29 使用流的第三方模組102
5.4 使用流基類105
技巧30 正確地從流的基類繼承105
技巧31 實現一個可讀流107
技巧32 實現一個可寫流111
技巧33 使用雙工流轉換和接收數據113
技巧34 使用轉換流解析數據114
5.5 高級模式和最佳化118
技巧35 流的最佳化118
技巧36 使用老的流API 121
技巧37 基於功能的流適配123
技巧38 測試流125
5.6 總結128
6 檔案系統:通過異步和同步的方法處理檔案. . . . . . . . . . . . . . . . . . . . . . . . . 129
6.1 fs 模組概述130
6.1.1 POSIX 檔案系統包裝器130
6.1.2 流132
6.1.3 批量檔案操作133
6.1.4 檔案監視133
6.1.5 同步的替代方案133
技巧39 讀取配置檔案134
技巧40 使用檔案描述136
技巧41 使用檔案鎖137
技巧42 遞歸檔案操作142
技巧43 編寫檔案資料庫147
技巧44 監視檔案以及資料夾151
6.2 總結154
7 網路:Node 真正的“Hello, World” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.1 Node 中的網路156
7.1.1 網路技術157
7.1.2 Node 網路模組161
7.1.3 非阻塞網路和執行緒池162
7.2 TCP 客戶端和服務端163
技巧45 創建TCP 服務端和客戶端163
技巧46 使用客戶端測試TCP 服務端165
技巧47 改進實時性低的套用168
7.3 UDP 客戶端和服務端170
技巧48 通過UDP 傳輸檔案170
技巧49 UDP 客戶端服務套用174
7.4 HTTP 客戶端和服務端179
技巧50 HTTP 伺服器179
技巧51 重定向181
技巧52 HTTP 代理186
7.5 創建DNS 請求189
技巧53 創建DNS 請求189
7.6 加密191
技巧54 一個加密的TCP 伺服器192
技巧55 加密的Web 伺服器和客戶端196
7.7 總結198
8 子進程:利用Node 整合外部應用程式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.1 執行外部應用程式202
技巧56 執行外部應用程式202
8.1.1 路徑和Path 的環境變數203
8.1.2 執行外部程式時候出現的異常204
技巧57 流和外部應用程式205
8.1.3 外部應用程式的串聯調用206
技巧58 在shell 中執行命令208
8.1.4 安全性和shell 命令執行209
技巧59 分離子進程210
8.1.5 父進程和子進程之間的I/O 處理211
8.1.6 引用計數和子進程213
8.2 執行Node 程式213
技巧60 執行Node 程式214
技巧61 Forking Node 模組216
技巧62 運行作業218
8.2.1 工作池220
8.2.2 使用池模組222
8.3 同步運行223
技巧63 同步子進程223
8.4 總結227
第二部分實踐中的技巧
9 網路:構建精簡的網路套用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.1 前端技術231
技巧64 快速的靜態網站伺服器231
技巧65 在Node 中使用DOM 236
技巧66 在瀏覽器端使用Node 模組238
9.2 服務端技術241
技巧67 Express 路由分離241
技巧68 自動重啟伺服器245
技巧69 配置web 套用248
技巧70 優雅地處理錯誤253
技巧71 RESTful web 套用257
技巧72 使用自定義的中間件267
技巧73 使用事件進行解耦273
技巧74 使用WebSockets 來處理sessions 276
技巧75 升級Express 3 到4 281
9.3 web 應用程式的測試285
技巧76 測試路由286
技巧77 為中間件注入創建seams 288
技巧78 測試依賴遠程服務的套用291
9.4 全棧框架297
9.5 實時服務299
9.6 總結300
10 測試:編寫健壯代碼的關鍵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.1 Node 測試的相關介紹303
10.2 使用斷言編寫簡單的測試304
技巧79 用內置的模組編寫測試305
技巧80 編寫驗證異常的測試308
技巧81 創建自定義的斷言312
10.3 測試裝置314
技巧82 使用一個測試裝置組織測試314
10.4 測試框架318
技巧83 使用Mocha 編寫測試319
技巧84 使用Mocha 測試web 套用323
技巧85 萬能測試協定(TAP) 328
10.5 測試工具331
技巧86 持續集成331
技巧87 資料庫裝置335
10.6 擴展閱讀343
10.7 總結343
11 調試:用於發現和解決問題. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
11.1 內省345
11.1.1 顯式異常345
11.1.2 隱藏的異常346
11.1.3 錯誤事件346
11.1.4 錯誤參數347
技巧88 處理未捕獲的異常348
技巧89 檢查我們的Node 代碼351
11.2 問題的調試352
技巧90 使用Node 內置的調試器352
技巧91 使用Node Inspector 359
技巧92 對Node 套用進行性能分析361
技巧93 記憶體泄漏的調試365
技巧94 使用REPL 來檢測運行中的程式370
技巧95 跟蹤系統調用377
11.3 總結381
12 生產環境中的Node:安全地部署應用程式. . . . . . . . . . . . . . . . . . . . . . . . . . 382
12.1 部署383
技巧96 將Node 程式部署到雲端383
技巧97 使用Apache 和Ngnix 部署Node 程式389
技巧98 在80 連線埠上安全地運行Node 程式392
技巧99 保持Node 進程一直運行394
技巧100 在生產環境中使用WebSockets 396
12.2 Node 程式的快取和擴展性402
技巧101 HTTP 快取402
技巧102 為程式的路由和擴展使用Node 代理404
技巧103 使用集群保持程式的擴展性和彈性408
12.3 維護413
技巧104 包的最佳化413
技巧105 日誌和日誌服務415
12.4 更多關於Node 程式的擴展性和彈性的備註418
12.5 總結419
第三部分編寫模組
13 編寫模組,掌握Node 的所有. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
13.1 頭腦風暴424
13.1.1 更快的斐波那契模組424
技巧106 計畫編寫我們的模組425
技巧107 驗證我們模組的想法427
13.2 創建package.json 檔案433
技巧108 創建package.json 檔案433
技巧109 依賴處理436
技巧110 語義化版本號441
13.3 用戶體驗444
技巧111 添加可執行腳本444
技巧112 在本地測試模組446
技巧113 在不同版本Node 中測試448
13.4 發布451
技巧114 發布模組451
技巧115 使用私有模組453
13.5 總結455
A 社區. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457