圖書簡介
Node.js是一種主流框架,它允許你使用JavaScript快速構建具有高度可伸縮性的網路程式。可是,它有自己的學習曲線,這本較為深入的指南性圖書首先介紹了Node.js平台的安裝,然後重點關註:創建和載入模組;使用緩衝區對二進制數據進行處理、編碼和編碼;用事件發射器模式簡化事件綁定等。本書還涵蓋了從使用定時器制定函式執行計畫到創建和控制外部進程等內容,可以讓你為運行、構建和測試自定義模組做好準備。
目錄
第Ⅰ部分概述和安裝
第1章安裝Node 3
1.1在Windows上安裝Node 4
1.2在MACOSX上安裝Node 6
1.3使用原始碼安裝Node 7
1.3.1選擇Node的版本 7
1.3.2下載Node原始碼 7
1.3.3編譯Node 8
1.3.4安裝Node 8
1.3.5運行Node 8
1.4安裝和套用Node包管理器 9
1.5本章小結 14
第2章Node簡介 15
2.1事件驅動編程風格介紹 16
2.2Node和JavaScript如何簡化異步應用程式的編寫 17
2.2.1什麼是閉包 17
2.2.2閉包如何輔助異步編程 18
2.3本章小結 19
第Ⅱ部分Node核心API基礎
第3章載入模組 23
3.1理解Node如何載入模組 24
3.2導出模組 24
3.3載入模組 25
3.3.1載入核心模組 25
3.3.2載入檔案模組 26
3.3.3載入資料夾模組 26
3.3.4從node_modules資料夾載入 26
3.3.5快取模組 27
3.4本章小結 28
第4章套用緩衝區處理、編碼和解碼二進制數據 29
4.1創建緩衝區 30
4.2在緩衝區中獲取和設定數據 30
4.3切分緩衝區 31
4.4複製緩衝區 32
4.5緩衝區解碼 32
4.6本章小結 33
第5章使用事件發射器模式簡化事件綁定 35
5.1理解標準回調模式 35
5.2理解事件發射器模式 36
5.3理解事件類型 37
5.4套用事件發生器API 38
5.4.1使用.addListener()或.on()綁定回調函式 38
5.4.2綁定多個事件監聽器 39
5.4.3使用.removeListener()從事件發射器中刪除一個事件監聽器 40
5.4.4使用.once()使回調函式最多執行一次 40
5.4.5使用.removeAllListeners()從事件發射器刪除所有事件監聽器 41
5.5創建事件發射器 41
5.5.1從Node事件發射器繼承 41
5.5.2發射事件 42
5.6本章小結 42
第6章使用定時器制定函式執行計畫 45
6.1使用setTimeout推遲函式執行 46
6.2使用clearTimeout取消函式執行 46
6.3制定和取消函式的重複執行計畫 47
6.4使用process.nextTick將函式執行推遲到下一輪事件循環 47
6.5阻塞事件循環 48
6.6退出事件循環 49
6.7使用setTimeout代替
setInterval強制函式
串列執行 49
6.8本章小結 50
第Ⅲ部分檔案、進程、流和網路
第7章查詢和讀寫檔案 53
7.1處理檔案路徑 54
7.1.1規範化路徑 54
7.1.2連線路徑 54
7.1.3解析路徑 55
7.1.4查找兩個絕對路徑之間的
相對路徑 55
7.1.5提取路徑的組成部分 55
7.1.6確定路徑是否存在 56
7.2fs模組簡介 57
7.3打開檔案 58
7.4讀取檔案 58
7.4.1寫入檔案 59
7.4.2關閉檔案 60
7.5本章小結 62
第8章創建和控制外部進程 63
8.1執行外部命令 63
8.2生成子進程 68
8.2.1創建子進程 68
8.2.2監聽子進程的輸出數據 69
8.2.3向子進程傳送數據 69
8.2.4當子進程退出時獲得通知 71
8.3向進程傳送信號並終止進程 72
8.4本章小結 73
第9章讀寫數據流 75
9.1使用可讀流 76
9.1.1等待數據 76
9.1.2暫停與恢複流 76
9.1.3了解流何時終止 77
9.2使用可寫流 77
9.2.1將數據寫入流 77
9.2.2等待流被清空 78
9.3考慮幾個流的例子 78
9.3.1創建檔案系統流 78
9.3.2理解網路流 80
9.4避免慢客戶端問題以及
挽救伺服器 80
9.4.1理解慢客戶端問題 80
9.4.2避免慢客戶端問題 81
9.4.3套用stream.pipe()避免
慢客戶端問題與使用pipe()
集成可讀流和可寫流 81
9.5本章小結 82
第10章構建TCP伺服器 83
10.1創建TCP伺服器 83
10.1.1套用套接字對象 85
10.1.2理解空閒套接字 86
10.1.3設定保持運行 87
10.1.4套用延時或非延時 87
10.1.5監聽連線 88
10.1.6關閉伺服器 88
10.1.7處理錯誤 88
10.2構建一個簡單的TCP
聊天伺服器 89
10.2.1接受連線 89
10.2.2從連線中讀取數據 89
10.2.3聚合所有客戶端 90
10.2.4廣播數據 91
10.2.5刪除被關閉的連線 91
10.2.6使用TCP聊天伺服器 92
10.3本章小結 93
第11章構建HTTP伺服器 95
11.1理解http.ServerRequest對象 96
11.2理解http.ServerResponse對象 98
11.2.1寫入回響頭 98
11.2.2修改或設定回響頭 98
11.2.3刪除回響頭 99
11.2.4寫入一塊回響主體 99
11.3以流的形式傳送HTTP分塊回響 99
11.3.1傳送檔案 99
11.3.2傳送其他進程的輸出 100
11.4關閉伺服器 100
11.5示例1:構建提交靜態檔案
的伺服器 101
11.6示例2:使用HTTP分塊
回響和定時器 102
11.7本章小結 102
第12章構建TCP客戶端 103
12.1連線伺服器 104
12.2傳送和接收數據 104
12.3終止連線 105
12.4處理錯誤 106
12.5創建命令行TCP客戶端的
示例 106
12.5.1連線伺服器 107
12.5.2向伺服器傳送命令行 107
12.5.3列印伺服器訊息 107
12.5.4在連線終止時重新連線 108
12.5.5關閉連線 110
12.5.6前述內容綜合 111
12.6本章小結 112
第13章創建HTTP請求 113
13.1創建GET請求 113
13.2使用其他HTTP動詞 114
13.2.1查看回響對象 115
13.2.2獲取回響主體 116
13.2.3以流的方式傳送
回響主體 116
13.3使用HTTP.Agent維護
套接字池 116
13.4套用第三方請求模組簡化
HTTP請求 118
13.4.1安裝和套用request
模組 118
13.4.2創建測試伺服器 119
13.4.3跟隨重定向 121
13.4.4設定請求選項 122
13.4.5對請求體進行編碼 125
13.4.6流式傳送 126
13.4.7使用CookieJar 127
13.5本章小結 127
第14章使用用戶數據報 129
14.1理解用戶數據報 129
14.2理解用戶數據報的使用 130
14.3構建數據報伺服器 130
14.3.1監聽訊息 130
14.3.2測試伺服器 131
14.3.3查看附加的訊息信息 132
14.4創建簡單的數據報回送
伺服器 132
14.4.1等待訊息 132
14.4.2向傳送端發回訊息 132
14.4.3前述內容綜合 133
14.5構建數據報客戶端 133
14.5.1創建客戶端 134
14.5.2傳送訊息 134
14.5.3關閉套接字 134
14.6創建一個簡單的數據報
命令行客戶端 134
14.6.1讀取命令行 135
14.6.2向伺服器傳送數據 135
14.6.3從伺服器接收數據 135
14.6.4前述內容綜合 136
第Ⅴ部分構建Web應用程式
第20章構建和使用HTTP中間件 197
20.1理解ConnectHTTP中間件
框架 198
20.2構建自定義HTTP中間件 198
20.2.1創建異步中間件 199
20.2.2在中間件內部註冊
回調函式 201
20.2.3在中間件內處理錯誤 202
20.3使用捆綁在Connect中的
HTTP中間件 206
20.3.1記錄請求 206
20.3.2處理錯誤 208
20.3.3提交靜態檔案 209
20.3.4解析查詢字元串 210
20.3.5解析請求主體 211
20.3.6解析Cookies 212
20.3.7使用會話 213
20.3.8其他可用的中間件 216
20.4本章小結 216
第21章用Express.js創建Web
應用程式 217
21.1初始化Express.js應用程式 218
21.2在應用程式中設定中間件 220
21.3路由請求 222
21.3.1處理路由 222
21.3.2使用會話 229
21.3.3使用路由中間件 234
21.4本章小結 238
第22章使用Socket.IO創建通用的
實時Web應用程式 241
22.1理解WebSockets如何工作 242
22.2使用Socket.IO創建
WebSocket應用程式 243
22.2.1在伺服器上安裝和
運行Socket.IO 243
22.2.2使用Socket.IO創建實時
網路聊天應用程式 245
22.2.3擴展聊天應用程式 250
22.2.4檢測連線斷開 253
22.2.5將用戶分隔到聊天室中 255
22.2.6使用名稱空間 259
22.2.7使用Redis分布運行
伺服器端應用程式 260
22.3本章小結 263
第Ⅵ部分連線資料庫
第23章使用node-mysql連線
MySQL資料庫 267
23.1套用庫與MySQL資料庫
進行連線和通信 267
23.2向資料庫添加數據時請
記住安全性 269
23.3高效讀取數據 272
23.4本章小結 276
第24章使用Nano連線CouchDB
資料庫 277
24.1安裝Nano 278
24.2連線和創建資料庫 281
24.3存儲文檔 285
24.4創建和使用CouchDB視圖 286
24.5將檔案附加到CouchDB
文檔上 299
24.6本章小結 312
第25章使用Mongoose連線
MongoDB資料庫 313
25.1安裝Mongoose 315