第1部分 入門
第1章 Node.js介紹 2
1.1 什麼是Node.js 2
1.2 使用Node.js能做什麼 3
1.3 安裝並創建第一個Node.js程序 3
1.3.1 驗證Node.js正確安裝 4
1.3.2 創建“Hello World”Node.js程序 4
1.4 小結 5
1.5 問與答 6
1.6 測驗 6
1.6.1 問題 6
1.6.2 答案 7
1.7 練習 7
第2章 npm(Node包管理器) 8
2.1 npm是什麼 8
2.2 安裝npm 9
2.3 安裝模塊 9
2.4 使用模塊 10
2.5 如何找模塊 11
2.5.1 官方來源 11
2.5.2 非官方來源 12
2.6 本地和全局的安裝 13
2.6.1 本地安裝 13
2.6.2 全局安裝 13
2.7 如何找模塊文檔 14
2.8 使用package.json指定依賴關係(dependency) 14
2.9 小結 16
2.10 問與答 16
2.11 測驗 16
2.11.1 問題 16
2.11.2 答案 17
2.12 練習 17
第3章 Node.js的作用 18
3.1 設計Node.js的目的 18
3.2 理解I/O 19
3.3 處理輸入 19
3.4 聯網的I/O是不可預測的 22
3.5 人類是不可預測的 24
3.6 處理不可預測性 25
3.7 小結 26
3.8 問與答 26
3.9 測驗 27
3.9.1 問題 27
3.9.2 答案 27
3.10 練習 27
第4章 迴調(Callback) 29
4.1 什麼是迴調 29
4.2 剖析迴調 33
4.3 Node.js如何使用迴調 34
4.4 同步和異步代碼 36
4.5 事件循環 39
4.6 小結 39
4.7 問與答 39
4.8 測驗 40
4.8.1 問題 40
4.8.2 答案 40
4.9 練習 40
第2部分 使用Node.js的基本網站
第5章 HTTP 44
5.1 什麼是HTTP 44
5.2 使用Node.js的HTTP服務器 44
5.2.1 一個基礎的服務器 44
5.2.2 加入頭(Header) 45
5.2.3 檢查響應頭 46
5.2.4 Node.js中的重定嚮 49
5.2.5 響應不同的請求 50
5.3 使用Node.js的HTTP客戶端 52
5.4 小結 53
5.5 問與答 53
5.6 測驗 54
5.6.1 問題 54
5.6.2 答案 54
5.7 練習 54
第6章 Express介紹 55
6.1 什麼是Express 55
6.2 為什麼使用Express 55
6.3 安裝Express 56
6.4 創建一個基礎的Express站點 56
6.5 探索Express 58
6.5.1 app.js 58
6.5.2 node_modules 58
6.5.3 package.json 58
6.5.4 public 58
6.5.5 routes 58
6.5.6 views 58
6.6 介紹Jade 59
6.6.1 使用Jade定義頁麵結構 60
6.6.2 使用Jade輸齣數據 62
6.7 小結 68
6.8 問與答 68
6.9 測驗 68
6.9.1 問題 69
6.9.2 答案 69
6.10 練習 69
第7章 深入Express 70
7.1 Web應用程序中的路由 70
7.2 在Express中路由如何工作 70
7.3 添加GET路由 71
7.4 添加POST路由 72
7.5 在路由中使用參數 73
7.6 讓路由保持可維護性 74
7.7 視圖渲染 75
7.8 使用本地變量 76
7.9 小結 78
7.10 問與答 78
7.11 測驗 78
7.11.1 問題 79
7.11.2 答案 79
7.12 練習 79
第8章 數據的持久化 80
8.1 什麼是持久的數據 80
8.2 將數據寫入文件 81
8.3 從文件讀取數據 82
8.4 讀取環境變量 83
8.5 使用數據庫 84
8.5.1 關係數據庫 84
8.5.2 NoSQL數據庫 85
8.6 在Node.js中使用MongoDB 85
8.6.1 安裝MongoDB 86
8.6.2 連接MongoDB 87
8.6.3 定義文檔 89
8.6.4 將Twitter Bootstrap包含進來 90
8.6.5 索引(Index)視圖 91
8.6.6 創建(Create)視圖 93
8.6.7 編輯視圖 95
8.6.8 刪除任務 98
8.6.9 添加閃齣消息 99
8.6.10 驗證輸入的數據 101
8.7 小結 102
8.8 問與答 103
8.9 測驗 103
8.9.1 問題 103
8.9.2 答案 103
8.10 練習 104
第3部分 調試、測試與部署
第9章 調試Node.js應用程序 106
9.1 調試 106
9.2 STDIO模塊 107
9.3 Node.js調試器 111
9.4 Node Inspector 113
9.5 關於測試的注釋 116
9.6 小結 116
9.7 問與答 116
9.8 測驗 117
9.8.1 問題 117
9.8.2 答案 117
9.9 練習 117
第10章 測試Node.js應用程序 119
10.1 為什麼測試 119
10.2 Assert(斷言)模塊 120
10.3 第三方測試工具 122
10.4 行為驅動的開發(Behavior Driven Development) 125
10.4.1 Vows 125
10.4.2 Mocha 128
10.5 小結 131
10.6 問與答 131
10.7 測驗 132
10.7.1 問題 132
10.7.2 答案 132
10.8 練習 132
第11章 部署Node.js應用程序 133
11.1 準備好部署 133
11.2 在雲上托管 133
11.3 Heroku 135
11.3.1 注冊Heroku 135
11.3.2 為Heroku準備應用程序 136
11.3.3 將應用程序部署到Heroku 137
11.4 Cloud Foundry 138
11.4.1 注冊Cloud Foundry 138
11.4.2 為Cloud Foundry準備應用程序 139
11.4.3 將應用程序部署到Cloud Foundry 140
11.5 Nodester 141
11.5.1 注冊Nodester 141
11.5.2 為Nodester準備應用程序 142
11.5.3 將應用程序部署到Nodester 143
11.6 其他PaaS提供商 144
11.7 小結 144
11.8 問與答 144
11.9 測驗 145
11.9.1 測驗 145
11.9.2 答案 145
11.10 練習 145
第4部分 使用Node.js的中間站點
第12章 介紹Socket.IO 148
12.1 現在要開始學習一些完全不同的技術瞭 148
12.2 動態Web簡史 148
12.3 Socket.IO 149
12.4 基礎的Socket.IO示例 150
12.5 從服務器發送數據到客戶端 152
12.6 將數據廣播給客戶端 156
12.7 雙嚮數據 160
12.8 小結 163
12.9 問與答 163
12.10 測驗 164
12.10.1 問題 164
12.10.2 答案 164
12.11 練習 165
第13章 一個Socket.IO聊天服務器 166
13.1 Express和Socket.IO 166
13.2 添加昵稱 168
13.2.1 將昵稱發送給服務器 169
13.2.2 管理昵稱列錶 171
13.2.3 使用迴調來驗證 174
13.2.4 廣播昵稱列錶 178
13.2.5 添加消息收發功能 179
13.3 小結 183
13.4 問與答 184
13.5 測驗 184
13.5.1 問題 184
13.5.2 答案 184
13.6 練習 185
第14章 一個流Twitter客戶端 186
14.1 流API 186
14.2 注冊Twitter 187
14.3 和Node.js一起使用Twitter的API 189
14.4 從數據中挖掘含義 191
14.5 將數據推送到瀏覽器 194
14.6 創建一個實時的愛恨錶 197
14.7 小結 206
14.8 問與答 206
14.9 測驗 206
14.9.1 問題 206
14.9.2 答案 206
14.10 練習 207
第15章 JSON API 208
15.1 API 208
15.2 JSON 209
15.3 使用Node.js發送JSON數據 211
15.4 從JavaScript對象創建JSON 212
15.5 使用Node.js消費JSON數據 213
15.6 使用Node.js創建JSON API 216
15.6.1 在Express中以JSON發送數據 216
15.6.2 構建應用程序 219
15.7 小結 224
15.8 問與答 225
15.9 測驗 225
15.9.1 問題 225
15.9.2 答案 225
15.10 練習 226
第5部分 探索Node.js API
第16章 進程模塊 228
16.1 進程是什麼 228
16.2 退齣進程以及進程中的錯誤 230
16.3 進程與信號 230
16.4 嚮進程發送信號 231
16.5 使用Node.js創建腳本 233
16.6 給腳本傳遞參數 234
16.7 小結 236
16.8 問與答 236
16.9 測驗 237
16.9.1 問題 237
16.9.2 答案 237
16.10 練習 238
第17章 子進程模塊 239
17.1 什麼是子進程 239
17.2 殺死子進程 241
17.3 與子進程通信 242
17.4 集群(Cluster)模塊 244
17.5 小結 246
17.6 問與答 246
17.7 測驗 246
17.7.1 問題 246
17.7.2 答案 246
17.8 練習 247
第18章 事件模塊 248
18.1 理解事件 248
18.2 通過HTTP演示事件 251
18.3 用事件玩乒乓 254
18.4 動態編寫事件偵聽器程序 255
18.5 小結 258
18.6 問與答 258
18.7 測驗 259
18.7.1 問題 259
18.7.2 答案 259
18.8 練習 259
第19章 緩衝區模塊 260
19.1 二進製數據初步 260
19.2 從二進製到文本 261
19.3 二進製和Node.js 262
19.4 Node.js中的緩衝區是什麼? 264
19.5 寫入緩衝區 265
19.6 嚮緩衝區追加數據 266
19.7 復製緩衝區 267
19.8 修改緩衝區中的字符串 267
19.9 小結 268
19.10 問與答 268
19.11 測驗 268
19.11.1 問題 268
19.11.2 答案 269
19.12 練習 269
第20章 流模塊 270
20.1 流簡介 270
20.2 可讀流 272
20.3 可寫流 275
20.4 通過管道連接流 276
20.5 流的MP3 277
20.6 小結 278
20.7 問與答 278
20.8 測驗 279
20.8.1 問題 279
20.8.2 答案 279
20.9 練習 279
第6部分 進一步的Node.js開發
第21章 CoffeeScript 282
21.1 什麼是CoffeeScript 282
21.2 安裝與運行CoffeeScript 284
21.3 為什麼要使用預編譯器 285
21.4 CoffeeScript的功能 286
21.4.1 最小語法 286
21.4.2 條件和比較 287
21.4.3 循環 288
21.4.4 字符串 289
21.4.5 對象 290
21.4.6 類、繼承和super 291
21.5 調試CoffeeScript 294
21.6 對CoffeeScript的反應 294
21.7 小結 295
21.8 問與答 295
21.9 測驗 296
21.9.1 問題 296
21.9.2 答案 296
21.10 練習 296
第22章 創建Node.js模塊 298
22.1 為什麼創建模塊 298
22.2 流行的Node.js模塊 298
22.3 package.json文件 299
22.4 文件夾結構 301
22.5 開發和測試模塊 302
22.6 添加可執行文件 304
22.7 使用麵嚮對象或者基於原型的編程 305
22.8 通過GitHub共享代碼 306
22.9 使用Travis CI 307
22.10 發布到npm 309
22.11 公開模塊 310
22.12 小結 310
22.13 問與答 310
22.14 測驗 311
22.14.1 問題 311
22.14.2 答案 311
22.15 練習 311
第23章 使用Connect創建中間件 312
23.1 什麼是中間件 312
23.2 Connect中的中間件 313
23.3 使用中間件的訪問控製 317
23.4 按IP地址限製訪問 319
23.5 將用戶強製到單個域上 321322
23.6 小結 323324
23.7 問與答 324
23.8 測驗 324
23.8.1 問題 324
23.8.2 答案 324325
23.9 練習 324325
第24章 結閤使用Backbone.js與Node.js 326
24.1 什麼是Backbone.js 326
24.2 Backbone.js如何工作 327
24.3 一個簡單的Backbone.js視圖 332
24.4 使用Backbone.js創建記錄 336
24.5 小結 337
24.6 問與答 337
24.7 測驗 338
24.7.1 問題 338
24.7.2 答案 338
24.8 練習 338
· · · · · · (
收起)