循序漸進Node.js企業級開發實踐
柳偉衛
相關主題
商品描述
目錄大綱
目 錄
第 1 章 走進Node.js的世界 1
1.1 認識Node.js 1
1.1.1 Node.js簡介 1
1.1.2 Node.js的特點 2
1.2 安裝Node.js及IDE 6
1.2.1 安裝Node.js和npm 6
1.2.2 Node.js與npm的關系 6
1.2.3 安裝npm鏡像 6
1.2.4 選擇合適的IDE 7
1.3 實戰:第一個Node.js應用 7
1.3.1 創建Node.js應用 7
1.3.2 運行Node.js應用 7
1.3.3 小結 8
1.4 實戰:在Node.js應用中使用TypeScript 8
1.4.1 創建TypeScript版本的Node.js應用 8
1.4.2 運行TypeScript應用 9
1.5 上機演練 9
1.6 本章小結 11
第 2 章 模塊化 12
2.1 理解模塊化機制 12
2.1.1 理解CommonJS規範 12
2.1.2 理解ECMAScript模塊 14
2.1.3 CommonJS和ECMAScript模塊的異同點 16
2.1.4 Node.js的模塊實現 16
2.2 使用npm管理模塊 18
2.2.1 使用npm命令安裝模塊 18
2.2.2 全局安裝與本地安裝 18
2.2.3 查看安裝信息 19
2.2.4 卸載模塊 19
2.2.5 更新模塊 19
2.2.6 搜索模塊 19
2.2.7 創建模塊 20
2.3 核心模塊 20
2.3.1 核心模塊介紹 20
2.3.2 實戰:核心模塊fs的簡單示例 20
2.4 上機演練 21
2.5 本章小結 22
第 3 章 測試 23
3.1 使用斷言 23
3.1.1 什麽是斷言測試 23
3.1.2 嚴格模式和遺留模式 24
3.1.3 實戰:斷言的使用 25
3.1.4 瞭解AssertionError 27
3.1.5 實戰:deepStrictEqual示例 27
3.2 第三方測試工具 29
3.2.1 Nodeunit 30
3.2.2 Mocha 31
3.2.3 Vows 31
3.3 上機演練 33
練習一:使用Node.js的斷言功能進行簡單的單元測試 33
練習二:使用.js的AssertionError 34
練習三:使用Node.js的第三方測試工具 34
3.4 本章小結 35
第 4 章 緩沖區 36
4.1 瞭解緩沖區 36
4.1.1 瞭解TypedArray 36
4.1.2 Buffer類 37
4.2 創建緩沖區 38
4.2.1 初始化緩沖區的API 39
4.2.2 理解數據的安全性 39
4.2.3 啟用零填充 40
4.2.4 指定字符編碼 40
4.3 切分緩沖區 41
4.4 連接緩沖區 42
4.5 比較緩沖區 43
4.6 緩沖區編解碼 44
4.6.1 解碼器和編碼器 44
4.6.2 緩沖區解碼 44
4.6.3 緩沖區編碼 45
4.7 上機演練 46
練習一:創建緩沖區 46
練習二:切分緩沖區 46
練習三:連接緩沖區 47
練習四:緩沖區編解碼 47
4.8 本章小結 48
第 5 章 事件處理 49
5.1 理解事件和回調 49
5.1.1 事件循環 50
5.1.2 事件驅動 50
5.2 事件發射器 51
5.2.1 將參數和this傳遞給監聽器 51
5.2.2 異步與同步 52
5.2.3 僅處理事件一次 52
5.3 事件類型 53
5.3.1 事件類型的定義 53
5.3.2 內置的事件類型 54
5.3.3 error事件 54
5.4 事件的操作 56
5.4.1 實戰:設置最大監聽器 56
5.4.2 實戰:獲取已註冊的事件的名稱 56
5.4.3 實戰:獲取監聽器數組的副本 57
5.4.4 實戰:將事件監聽器添加到監聽器數組的開頭 57
5.4.5 實戰:移除監聽器 58
5.5 上機演練 60
5.6 本章小結 61
第 6 章 定時處理 62
6.1 定時處理常用類 62
6.1.1 Immediate 62
6.1.2 Timeout 63
6.2 定時調度 64
6.2.1 setImmediate 64
6.2.2 setInterval 65
6.2.3 setTimeout 65
6.2.4 setInterval和setTimeout的異同 66
6.3 取消定時 67
6.4 上機演練 69
6.5 本章小結 70
第 7 章 文件處理 71
7.1 瞭解node:fs模塊 71
7.1.1 同步與異步操作文件 71
7.1.2 文件描述符 73
7.2 處理文件路徑 74
7.2.1 字符串形式的路徑 74
7.2.2 Buffer形式的路徑 74
7.2.3 URL對象的路徑 75
7.3 打開文件 76
7.3.1 文件系統標志 77
7.3.2 實戰:打開當前目錄下的文件 78
7.4 實戰:讀取文件 79
7.4.1 fs.read 79
7.4.2 fs.readdir 80
7.4.3 fs.readFile 80
7.5 實戰:寫入文件 82
7.5.1 將buffer寫入文件 82
7.5.2 將字符串寫入文件 83
7.5.3 將數據寫入文件 84
7.6 上機演練 85
7.7 本章小結 86
第 8 章 進程 87
8.1 執行外部命令 87
8.1.1 spawn() 87
8.1.2 exec() 89
8.1.3 execFile() 90
8.2 子進程ChildProcess 92
8.2.1 生成子進程 92
8.2.2 進程間通信 92
8.3 終止進程 94
8.4 上機演練 94
練習一:執行外部命令 94
練習二:進程間通信 95
練習三:終止進程 95
8.5 本章小結 96
第 9 章 流 97
9.1 流的概述 97
9.1.1 流的類型 97
9.1.2 對象模式 97
9.1.3 流中的緩沖區 98
9.2 可讀流 98
9.2.1 stream.Readable類事件 99
9.2.2 stream.Readable類方法 101
9.2.3 異步迭代器 104
9.2.4 兩種讀取模式 105
9.3 可寫流 105
9.3.1 stream.Writable類事件 106
9.3.2 stream.Writable類方法 107
9.4 雙工流與轉換流 110
9.4.1 實現雙工流 110
9.4.2 實戰:雙工流的例子 110
9.4.3 對象模式的雙工流 111
9.4.4 實現轉換流 112
9.5 上機演練 112
練習一:使用可讀流讀取文件 112
練習二:使用可寫流寫入文件 113
練習三:實現一個簡單的雙工流 113
9.6 本章小結 114
第 10 章 TCP 115
10.1 創建TCP服務器 115
10.1.1 瞭解TCP 115
10.1.2 瞭解socket 116
10.1.3 node:net模塊 117
10.1.4 實戰:創建TCP服務器 117
10.2 監聽連接 118
10.2.1 server.listen(handle[, backlog][, callback]) 119
10.2.2 server.listen(options[, callback]) 119
10.3 發送和接收數據 120
10.3.1 創建socket對象 120
10.3.2 創建socket對象來發送和接收數據 121
10.3.3 實戰:TCP服務器的例子 121
10.4 關閉TCP服務器 122
10.4.1 socket.end() 123
10.4.2 server.close() 124
10.5 上機演練 125
練習一:創建TCP服務器 125
練習二:發送和接收數據 126
練習三:關閉TCP服務器 127
10.6 本章小結 128
第 11 章 UDP 129
11.1 創建UDP服務器 129
11.1.1 瞭解UDP 129
11.1.2 TCP與UDP的區別 130
11.1.3 實戰:創建UDP服務器 130
11.2 監聽連接 131
11.3 發送和接收數據 131
11.3.1 message事件 131
11.3.2 socket.send()方法 132
11.4 關閉UDP服務器 133
11.5 實戰:UDP服務器通信 134
11.5.1 UDP服務器 134
11.5.2 UDP客戶端 135
11.5.3 運行應用 135
11.6 上機演練 136
練習一:創建UDP服務器 136
練習二:發送和接收數據 137
練習三:關閉UDP服務器 137
11.7 本章小結 138
第 12 章 HTTP 139
12.1 創建HTTP服務器 139
12.1.1 使用http.Server類創建服務器 139
12.1.2 http.Server事件 140
12.2 處理HTTP的常用操作 142
12.3 請求對象和響應對象 142
12.3.1 http.ClientRequest類 142
12.3.2 http.ServerResponse類 146
12.4 REST概述 149
12.4.1 REST定義 149
12.4.2 REST設計原則 150
12.5 成熟度模型 151
12.5.1 第0級:使用HTTP作為傳輸方式 151
12.5.2 第1級:引入資源的概念 153
12.5.3 第2級:根據語義使用HTTP動詞 153
12.5.4 第3級:使用HATEOAS 155
12.6 實戰:構建REST服務 157
12.6.1 新增用戶 157
12.6.2 修改用戶 158
12.6.3 刪除用戶 159
12.6.4 響應請求 160
12.6.5 運行應用 161
12.7 上機演練 163
練習一:創建一個簡單的HTTP服務器 163
練習二:實現一個簡單的RESTful API服務 164
12.8 本章小結 165
第 13 章 WebSocket 166
13.1 創建WebSocket服務器 166
13.1.1 常見的Web推送技術 166
13.1.2 使用ws創建WebSokcet服務器 168
13.2 監聽連接 168
13.3 發送和接收數據 169
13.3.1 發送數據 169
13.3.2 發送ping和pong 170
13.3.3 接收數據 170
13.4 準備的狀態 171
13.5 關閉WebSocket服務器 171
13.6 實戰:WebSocket聊天服務器 171
13.6.1 聊天服務器的需求 172
13.6.2 服務器的實現 172
13.6.3 客戶端的實現 173
13.6.4 運行應用 174
13.7 上機演練 175
練習一:創建一個簡單的WebSocket服務器 175
練習二:實現一個簡單的聊天室功能 176
練習三:實現客戶端與服務器的實時通信 177
13.8 本章小結 178
第 14 章 TLS/SSL 179
14.1 瞭解TLS/SSL 179
14.1.1 加密算法 179
14.1.2 安全通道 182
14.1.3 TLS/SSL握手過程 182
14.1.4 HTTPS 185
14.2 Node.js中的TLS/SSL 186
14.3 產生私鑰 186
14.4 實戰:構建TLS服務器和客戶端 187
14.4.1 構建TLS服務器 187
14.4.2 構建TLS客戶端 188
14.4.3 運行應用 189
14.5 上機演練 190
練習一:生成自簽名SSL證書和私鑰 190
練習二:構建TLS服務器和客戶端 191
14.6 本章小結 192
第 15 章 常用Web中間件 193
15.1 Express 193
15.1.1 安裝Express 193
15.1.2 實戰:編寫“Hello World”應用 195
15.1.3 運行“Hello World”應用 195
15.1.4 實戰:使用Express構建REST API 195
15.1.5 測試Express的REST API 198
15.2 Socket.IO 201
15.2.1 Socket.IO的主要特點 201
15.2.2 安裝Socket.IO 202
15.2.3 實戰:編寫Socket.IO服務器 203
15.2.4 實戰:編寫Socket.IO客戶端 204
15.2.5 運行應用 205
15.3 上機演練 206
練習一:使用Express構建REST服務 206
練習二:使用Socket.IO實現一個簡單的實時聊天應用 207
15.4 本章小結 209
第 16 章 Vue.js與響應式編程 210
16.1 常見UI框架Vue.js 210
16.1.1 Vue.js與jQuery的不同 210
16.1.2 Vue.js的下載和安裝 212
16.1.3 實戰:創建Vue.js應用 214
16.2 瞭解Observable機制 217
16.2.1 瞭解Observable的基本概念 218
16.2.2 定義觀察者 218
16.2.3 執行訂閱 219
16.2.4 創建Observable對象 220
16.2.5 實現多播 221
16.2.6 處理錯誤 223
16.3 瞭解RxJS技術 224
16.3.1 創建Observable對象的函數 224
16.3.2 瞭解操作符 225
16.3.3 處理錯誤 226
16.4 瞭解Vue.js中的reactive 227
16.5 上機演練 229
練習一:探索Vue.js與jQuery的不同 229
練習二:使用create-vue創建並運行Vue.js應用 231
練習三:理解Vue.js中的響應式和Observable機制 231
16.6 本章小結 232
第 17 章 操作MySQL 233
17.1 下載安裝MySQL 233
17.1.1 下載安裝包 233
17.1.2 解壓安裝包 233
17.1.3 創建my.ini 234
17.1.4 初始化安裝 234
17.1.5 啟動MySQL Server 234
17.1.6 使用MySQL客戶端 235
17.1.7 關閉MySQL Server 235
17.2 MySQL的基本操作 236
17.3 實戰:使用Node.js操作MySQL 237
17.3.1 安裝mysql模塊 237
17.3.2 實現簡單的查詢 239
17.3.3 運行應用 239
17.4 深入理解mysql模塊 242
17.4.1 建立連接 242
17.4.2 連接選項 243
17.4.3 關閉連接 244
17.4.4 執行CURD 245
17.5 上機演練 247
練習一:安裝並配置MySQL 247
練習二:使用Node.js操作MySQL進行基本數據庫操作 248
練習三:深入理解mysql模塊的使用 250
17.6 本章小結 251
第 18 章 操作MongoDB 252
18.1 安裝MongoDB 252
18.1.1 MongoDB簡介 252
18.1.2 下載和安裝MongoDB 253
18.1.3 啟動MongoDB服務 254
18.1.4 連接到MongoDB服務器 254
18.2 MongoDB的基本操作 255
18.2.1 顯示已有的數據庫 255
18.2.2 創建和使用數據庫 255
18.2.3 插入文檔 256
18.2.4 查詢文檔 259
18.2.5 修改文檔 264
18.2.6 刪除文檔 269
18.3 實戰:使用Node.js操作MongoDB 270
18.3.1 安裝mongodb模塊 270
18.3.2 實現訪問MongoDB 272
18.3.3 運行應用 272
18.4 深入理解mongodb模塊 273
18.4.1 建立連接 273
18.4.2 插入文檔 273
18.4.3 查找文檔 274
18.4.4 修改文檔 276
18.4.5 刪除文檔 277
18.5 上機演練 278
練習一:安裝MongoDB並連接查看數據庫 278
練習二:在Node.js應用中操作MongoDB 278
練習三:深入理解Node.js中的mongodb模塊操作 279
18.6 本章小結 280
第 19 章 操作Redis 281
19.1 下載和安裝Redis 281
19.1.1 Redis簡介 281
19.1.2 在Linux平臺上安裝Redis 282
19.1.3 在Windows平臺上安裝Redis 283
19.2 Redis的數據類型及基本操作 284
19.2.1 Redis key 284
19.2.2 Redis String 285
19.2.3 修改和查詢key空間 286
19.2.4 Redis超時 287
19.2.5 Redis List 287
19.2.6 使用Redis List的第一步 288
19.2.7 List常見的用例 289
19.2.8 限制列表 289
19.3 實戰:使用Node.js操作Redis 290
19.3.1 安裝redis模塊 290
19.3.2 實現訪問Redis 291
19.3.3 運行應用 292
19.4 上機演練 293
練習一:安裝Redis並測試連接 293
練習二:使用Redis存儲和檢索數據 293
練習三:使用Redis List實現消息隊列 294
19.5 本章小結 295
第 20 章 綜合實戰:基於WebSocket的即時聊天應用 296
20.1 應用概述 296
20.2 實現後台服務器 297
20.2.1 初始化websocket-chat 297
20.2.2 訪問靜態文件資源 298
20.2.3 事件處理 299
20.3 實現前臺客戶端 300
20.3.1 頁面HTML及樣式設計 300
20.3.2 業務邏輯 302
20.4 運行效果 309
20.5 上機演練 313
練習一:初始化WebSocket聊天應用 313
練習二:配置靜態文件服務和事件處理 314
練習三:完善前臺客戶端 315
20.6 本章小結 316
參考文獻 317