Node.js實戰(zhàn)【本書是Manning“XX實戰(zhàn)”系列的新書,是填補Node.js技術資料空缺的不錯選擇。】
定 價:69 元
叢書名:圖靈程序設計叢書
- 作者:Sarah Lacy著
- 出版時間:2014/5/1
- ISBN:9787115352460
- 出 版 社:人民郵電出版社
- 中圖法分類:TP312JA
- 頁碼:356
- 紙張:膠版紙
- 版次:1
- 開本:16開
服務器端JavaScript?沒錯。Node.js是一個JavaScript服務器,支持可伸縮的高性能Web應用。借助異步I/O,這個服務器可以同時做很多事情,能滿足聊天、游戲和實時統(tǒng)計等應用的需求。并且既然是JavaScript,那你就可以全棧使用一種語言。
本書向讀者展示了如何構建產(chǎn)品級應用,對關鍵概念的介紹清晰明了,貼近實際的例子,涵蓋從安裝到部署的各個環(huán)節(jié),是一部講解與實踐并重的優(yōu)秀著作。通過學習本書,讀者將深入異步編程、數(shù)據(jù)存儲、輸出模板、讀寫文件系統(tǒng),掌握創(chuàng)建TCP/IP服務器和命令行工具等非HTTP程序的技術。本書同樣非常適合熟悉Rails、Django或PHP開發(fā)的讀者閱讀學習。
本書主要內(nèi)容:
Node js及其擴展的安裝配置;
全面理解異步編程和事件循環(huán);
學會開發(fā)微博、聊天和游戲等熱門應用。
Node js核心框架貢獻者代表作,Node.js項目負責人、Node包管理器(NPM)作者力薦!
MikeCantelon
Node js核心框架貢獻者、Node社區(qū)活躍分子、資深培訓師和演講人。
MarcHarter
Node js核心框架貢獻者。
T J Holowaychuk
參與開發(fā)了很多Node js模塊,包括流行的Express框架。
NathanRajlich
大名鼎鼎的TooTallNate,Node js核心代碼提交者。
吳海星
MikeCantelon
Node js核心框架貢獻者、Node社區(qū)活躍分子、資深培訓師和演講人。
MarcHarter
Node js核心框架貢獻者。
T J Holowaychuk
參與開發(fā)了很多Node js模塊,包括流行的Express框架。
NathanRajlich
大名鼎鼎的TooTallNate,Node js核心代碼提交者。
吳海星
2001年畢業(yè)于南京理工大學。編程數(shù)載代碼不過幾十萬,翻譯幾年碼字不過幾百萬。項目不過十幾個,帶隊不到五十人。年過而立,惴惴不安,愈加發(fā)奮,孜孜求學,愿憑綿薄之力,貢獻于IT社區(qū)。
第一部分 Node基礎
第1章 歡迎進入Node js世界 2
1 1 構建于JavaScript之上 3
1 2 異步和事件觸發(fā):瀏覽器 4
1 3 異步和事件觸發(fā):服務器 5
1 4 DIRT程序 6
1 5 默認DIRT 8
1 5 1 簡單的異步程序 9
1 5 2 Hello World HTTP服務器 10
1 5 3 流數(shù)據(jù) 10
1 6 小結 11
第2章 構建有多個房間的聊天室程序 12
2 1 程序概覽 12
2 2 程序需求及初始設置 15
2 2 1 提供HTTP和WebSocket服務 15
第一部分 Node基礎
第1章 歡迎進入Node js世界 2
1 1 構建于JavaScript之上 3
1 2 異步和事件觸發(fā):瀏覽器 4
1 3 異步和事件觸發(fā):服務器 5
1 4 DIRT程序 6
1 5 默認DIRT 8
1 5 1 簡單的異步程序 9
1 5 2 Hello World HTTP服務器 10
1 5 3 流數(shù)據(jù) 10
1 6 小結 11
第2章 構建有多個房間的聊天室程序 12
2 1 程序概覽 12
2 2 程序需求及初始設置 15
2 2 1 提供HTTP和WebSocket服務 15
2 2 2 創(chuàng)建程序的文件結構 16
2 2 3 指明依賴項 16
2 2 4 安裝依賴項 17
2 3 提供HTML、CSS和客戶端JavaScript的服務 18
2 3 1 創(chuàng)建靜態(tài)文件服務器 19
2 3 2 添加HTML和CSS文件 21
2 4 用Socket IO處理與聊天相關的消息 23
2 4 1 設置Socket IO服務器 24
2 4 2 處理程序場景及事件 25
2 5 在程序的用戶界面上使用客戶端JavaScript 29
2 5 1 將消息和昵稱/房間變更請求傳給服務器 29
2 5 2 在用戶界面中顯示消息及可用房間 30
2 6 小結 34
第3章 Node編程基礎 35
3 1 Node功能的組織及重用 36
3 1 1 創(chuàng)建模塊 37
3 1 2 用module exports微調(diào)模塊的創(chuàng)建 39
3 1 3 用node_modules重用模塊 40
3 1 4 注意事項 41
3 2 異步編程技術 42
3 2 1 用回調(diào)處理一次性事件 43
3 2 2 用事件發(fā)射器處理重復性事件 46
3 2 3 異步開發(fā)的難題 53
3 3 異步邏輯的順序化 54
3 3 1 什么時候使用串行流程控制 55
3 3 2 實現(xiàn)串行化流程控制 56
3 3 3 實現(xiàn)并行化流程控制 58
3 3 4 利用社區(qū)里的工具 60
3 4 小結 61
第二部分 用Node開發(fā)Web程序
第4章 構建Node Web程序 64
4 1 HTTP服務器的基礎知識 64
4 1 1 Node如何向開發(fā)者呈現(xiàn)HTTP請求 65
4 1 2 一個用“Hello World”做響應的HTTP服務器 67
4 1 3 讀取請求頭及設定響應頭 67
4 1 4 設定HTTP響應的狀態(tài)碼 67
4 2 構建RESTful Web服務 68
4 2 1 用POST請求創(chuàng)建資源 69
4 2 2 用GET請求獲取資源 71
4 2 3 用DELETE請求移除資源 72
4 3 提供靜態(tài)文件服務 73
4 3 1 創(chuàng)建一個靜態(tài)文件服務器 73
4 3 2 處理服務器錯誤 77
4 3 3 用fs stat()實現(xiàn)先發(fā)制人的錯誤處理 77
4 4 從表單中接受用戶輸入 78
4 4 1 處理提交的表單域 78
4 4 2 用formidable處理上傳的文件 81
4 4 3 計算上傳進度 84
4 5 用HTTPS加強程序的安全性 85
4 6 小結 86
第5章 存儲Node程序中的數(shù)據(jù) 87
5 1 無服務器的數(shù)據(jù)存儲 88
5 1 1 內(nèi)存存儲 88
5 1 2 基于文件的存儲 88
5 2 關系型數(shù)據(jù)庫管理系統(tǒng) 91
5 2 1 MySQL 91
5 2 2 PostgreSQL 99
5 3 NoSQL數(shù)據(jù)庫 100
5 3 1 Redis 101
5 3 2 MongoDB 105
5 3 3 Mongoose 107
5 4 小結 109
第6章 Connect 110
6 1 搭建一個Connect程序 111
6 2 Connect的工作機制 112
6 2 1 做日志的中間件 112
6 2 2 響應“hello world”的中間件 113
6 3 為什么中間件的順序很重要 114
6 3 1 中間件什么時候不調(diào)用next() 114
6 3 2 用中間件的順序執(zhí)行認證 115
6 4 掛載中間件和服務器 115
6 4 1 認證中間件 116
6 4 2 顯示管理面板的中間件 117
6 5 創(chuàng)建可配置中間件 118
6 5 1 創(chuàng)建可配置的logger中間件組件 119
6 5 2 構建路由中間件組件 120
6 5 3 構建一個重寫URL的中間件組件 122
6 6 使用錯誤處理中間件 123
6 6 1 Connect的默認錯誤處理器 124
6 6 2 自行處理程序錯誤 124
6 6 3 使用多個錯誤處理中間件組件 125
6 7 小結 129
第7章 Connect自帶的中間件 130
7 1 解析cookie、請求主體和查詢字符串的中間件 131
7 1 1 cookieParser():解析HTTP cookie 131
7 1 2 bodyParser():解析請求主體 134
7 1 3 limit():請求主體的限制 135
7 1 4 query():查詢字符串解析 137
7 2 實現(xiàn)Web程序核心功能的中間件 138
7 2 1 logger():記錄請求 138
7 2 2 favicon():提供favicon 140
7 2 3 methodOverride():偽造HTTP方法 141
7 2 4 vhost():虛擬主機 143
7 2 5 session():會話管理 144
7 3 處理Web程序安全的中間件 148
7 3 1 basicAuth():HTTP基本認證 148
7 3 2 csrf():跨站請求偽造防護 150
7 3 3 errorHandler():開發(fā)錯誤處理 150
7 4 提供靜態(tài)文件服務的中間件 152
7 4 1 static():靜態(tài)文件服務 152
7 4 2 compress():壓縮靜態(tài)文件 154
7 4 3 directory():目錄列表 156
7 5 小結 157
第8章 Express 158
8 1 生成程序骨架 160
8 1 1 安裝Express的可執(zhí)行程序 161
8 1 2 生成程序 162
8 1 3 探索程序 162
8 2 配置Express和你的程序 164
8 3 渲染視圖 166
8 3 1 視圖系統(tǒng)配置 167
8 3 2 視圖查找 169
8 3 3 把數(shù)據(jù)輸出到視圖中 171
8 4 處理表單和文件上傳 175
8 4 1 實現(xiàn)照片模型 175
8 4 2 創(chuàng)建照片上傳表單 176
8 4 3 顯示上傳照片列表 178
8 5 創(chuàng)建資源下載 179
8 5 1 創(chuàng)建照片下載路由 179
8 5 2 實現(xiàn)照片下載路由 180
8 6 小結 182
第9章 Express進階 183
9 1 認證用戶 184
9 1 1 保存和加載用戶 184
9 1 2 注冊新用戶 189
9 1 3 已注冊用戶登錄 194
9 1 4 用戶加載中間件 197
9 2 先進的路由技術 199
9 2 1 校驗用戶內(nèi)容提交 199
9 2 2 特定路由中間件 202
9 2 3 實現(xiàn)分頁 205
9 3 創(chuàng)建一個公開的REST API 208
9 3 1 設計API 208
9 3 2 添加基本的認證 209
9 3 3 實現(xiàn)路由 209
9 3 4 啟用內(nèi)容協(xié)商 212
9 4 錯誤處理 214
9 4 1 處理404錯誤 215
9 4 2 處理錯誤 217
9 5 小結 220
第10章 測試Node程序 221
10 1 單元測試 222
10 1 1 assert模塊 222
10 1 2 Nodeunit 225
10 1 3 Mocha 227
10 1 4 Vows 232
10 1 5 should js 234
10 2 驗收測試 235
10 2 1 Tobi 236
10 2 2 Soda 237
10 3 小結 239
第11章 Web程序模板 240
11 1 用模板保持代碼的整潔性 240
11 2 嵌入JavaScript的模板 244
11 2 1 創(chuàng)建模板 245
11 2 2 用EJS過濾器處理模板數(shù)據(jù) 246
11 2 3 將EJS集成到你的程序中 249
11 2 4 在客戶端程序中使用EJS 250
11 3 使用Mustache模板語言與Hogan 251
11 3 1 創(chuàng)建模板 251
11 3 2 Mustache標簽 252
11 3 3 微調(diào)Hogan 254
11 4 用Jade做模板 255
11 4 1 Jade基礎知識 256
11 4 2 Jade模板中的邏輯 258
11 4 3 組織Jade模板 260
11 5 小結 264
第三部分 在Node中更進一步
第12章 部署Node程序并維持正常運行時間 266
12 1 安置Node程序 266
12 1 1 專用的和虛擬私有服務器 267
12 1 2 云主機 268
12 2 部署的基礎知識 269
12 2 1 從Git存儲庫部署 270
12 2 2 讓Node保持運行 270
12 3 讓正常運行時間和性能達到最優(yōu) 271
12 3 1 用Upstart維護正常運行時間 272
12 3 2 集群API:利用多核的優(yōu)勢 273
12 3 3 靜態(tài)文件及代理 275
12 4 小結 277
第13章 超越Web服務器 278
13 1 Socket IO 278
13 1 1 創(chuàng)建一個最小的Socket IO程序 279
13 1 2 用Socket IO觸發(fā)頁面和CSS的重新加載 281
13 1 3 Socket IO的其他用法 283
13 2 深入TCP/IP網(wǎng)絡 284
13 2 1 處理緩沖區(qū)和二進制數(shù)據(jù) 284
13 2 2 創(chuàng)建TCP服務器 286
13 2 3 創(chuàng)建TCP客戶端 289
13 3 跟操作系統(tǒng)交互的工具 290
13 3 1 單例的全局process對象 291
13 3 2 使用文件系統(tǒng)模塊 293
13 3 3 繁衍外部進程 296
13 4 開發(fā)命令行工具 301
13 4 1 解析命令行參數(shù) 301
13 4 2 處理stdin和stdout 302
13 4 3 添加彩色的輸出 304
13 5 小結 306
第14章 Node生態(tài)系統(tǒng) 307
14 1 給Node開發(fā)人員的在線資源 308
14 1 1 Node和模塊的參考資料 308
14 1 2 Google群組 309
14 1 3 IRC 309
14 1 4 GitHub問題列表 310
14 2 GitHub 310
14 2 1 GitHub入門 311
14 2 2 添加一個項目到GitHub中 312
14 2 3 用GitHub協(xié)作 314
14 3 為npm庫做貢獻 316
14 3 1 準備包 317
14 3 2 編寫包規(guī)范 317
14 3 3 測試和發(fā)布包 318
14 4 小結 320
附錄A 安裝Node和社區(qū)附加組件 321
附錄B 調(diào)試Node 329
附錄C Express的擴展及配置 336
【前言】
2011年初,Manning出版社找到我們,說想出一本關于Node.js的書,那時Node社區(qū)的狀態(tài)和現(xiàn)在很不一樣,圈子還很小。盡管已經(jīng)有很多人表現(xiàn)出了對它的興趣,但Node仍然被主流開發(fā)社區(qū)看做是一項有風險的技術,還沒有人寫過關于Node的書。盡管寫書的想法令人生畏,但我們還是決定去大膽一試。
鑒于我們各自的開發(fā)方向不同,我們想不僅要把這本書的重點全放在Node的Web程序開發(fā)上,還要探索其他有趣的潛在用途。我們想給Web開發(fā)人員指出一條道路,用現(xiàn)有技術將異步開發(fā)帶入服務器這一Node愿景。
這本書我們寫了兩年多,在寫作過程中,這門技術已經(jīng)進化了,所以我們也相應地做了更新。它現(xiàn)在變得更大了,很多成熟的公司也開始擁抱Node。
對于想做些不同嘗試的Web程序開發(fā)人員,現(xiàn)在是學習Node的好時機,希望這本書可以幫到你,讓你能迅速學會這門技術,并在其中找到樂趣。