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