狼書(卷2):Node.js Web應(yīng)用開發(fā)
定 價:99 元
- 作者:狼叔
- 出版時間:2020/1/1
- ISBN:9787121359064
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP312.8
- 頁碼:440
- 紙張:
- 版次:01
- 開本:16開
Node.js開發(fā)簡單,性能極好,一經(jīng)發(fā)布便成了明星級項目。隨著大前端領(lǐng)域的蓬勃發(fā)展,跨平臺開發(fā)、API構(gòu)建、Web應(yīng)用開發(fā)等場景愈加常見,Node.js也成為大前端開發(fā)的必備“神器”。本書主要講解Node.js Web應(yīng)用開發(fā)涉及的HTTP基礎(chǔ)知識、常用開發(fā)框架、源碼原理、數(shù)據(jù)庫和項目實戰(zhàn),旨在向讀者展示如何通過Node.js和Koa編寫出更具前端特色的Web應(yīng)用。本書還講解了Koa中的核心中間件原理,展望了未來Web應(yīng)用開發(fā)的發(fā)展方向;贜ode.js開發(fā)Web應(yīng)用具有上手簡單、開發(fā)快速、執(zhí)行高效等特點(diǎn),非常適合快速迭代,因此各位大前端領(lǐng)域及后端領(lǐng)域的測試、運(yùn)維、軟件開發(fā)從業(yè)者都可以閱讀本書。
狼叔(網(wǎng)名i5ting),Node.js 技術(shù)布道者,“Node全棧”微信公眾號作者,全棧技術(shù)實踐者。曾就職于多家知名IT企業(yè),從事前端開發(fā)、后端開發(fā)、數(shù)據(jù)分析等工作,目前負(fù)責(zé)公司內(nèi)的Node.js開發(fā)和基礎(chǔ)框架開發(fā)工作。
目錄
第1章 下一代Web框架Koa 1
1.1 Koa簡介 1
1.1.1 應(yīng)用場景 2
1.1.2 開發(fā)要點(diǎn) 3
1.1.3 Koa入門 4
1.1.4 為什么選擇Koa 7
1.2 Koa腳手架 8
1.2.1 安裝Koa生成器 9
1.2.2 創(chuàng)建Hello world 10
1.2.3 目錄解析 11
1.2.4 Koa v2中間件的寫法 20
1.2.5 路由 21
1.2.6 切換視圖模板引擎 25
1.2.7 Koa代碼調(diào)試 26
1.3 Node.js Web框架演進(jìn) 29
1.3.1 Node.js http模塊 29
1.3.2 最早的Connect 29
1.3.3 曾經(jīng)扛鼎的Express框架 33
1.3.4 新興Web開發(fā)框架Koa 35
1.3.5 Express和Koa大比拼 38
1.4 測試 38
1.4.1 Node.js測試框架 39
1.4.2 AVA測試框架 39
1.4.3 測試用例與斷言 40
1.4.4 實踐 41
1.4.5 更多內(nèi)容 44
1.5 本章小結(jié) 48
第2章 Koa的核心擴(kuò)展機(jī)制:中間件 49
2.1 中間件 49
2.1.1 什么是中間件 49
2.1.2 上下文對象 57
2.1.3 回形針一樣的中間件 66
2.1.4 常用中間件 88
2.2 路由 89
2.2.1 koa-router 89
2.2.2 路由詳解 93
2.2.3 將路由放到目錄里 98
2.3 視圖 101
2.3.1 koa-views 101
2.3.2 默認(rèn)模板引擎Pug 102
2.3.3 views目錄模板說明 102
2.3.4 consolidate.js 104
2.4 靜態(tài)服務(wù)模塊 104
2.4.1 koa-static 105
2.4.2 koa-send 106
2.4.3 koa-mount 108
2.4.4 koa-serve-static 108
2.5 本章小結(jié) 109
第3章 HTTP必知必會 110
3.1 請求響應(yīng)模型 110
3.1.1 請求 112
3.1.2 響應(yīng) 112
3.1.3 核心要點(diǎn) 114
3.2 HTTPS 127
3.2.1 生成證書 129
3.2.2 驗證與自動續(xù)約 130
3.2.3 Node.js服務(wù)器HTTPS配置 131
3.2.4 Nginx HTTPS配置 132
3.2.5 Nginx HTTPS反向代理配置 134
3.3 代理 136
3.3.1 協(xié)議支持 136
3.3.2 mini-proxy 140
3.3.3 hiproxy 146
3.4 本章小結(jié) 152
第4章 Koa練習(xí) 153
4.1 基礎(chǔ)知識 153
4.1.1 地址 153
4.1.2 HTTP頭部 156
4.1.3 HTTP動詞 161
4.1.4 HTTP狀態(tài)碼 163
4.1.5 Cookie 164
4.2 獲取不同參數(shù)的3種方法 165
4.2.1 獲取具名參數(shù) 166
4.2.2 解析請求體 166
4.2.3 獲取查詢字符串 167
4.3 body解析 168
4.3.1 模塊依賴 168
4.3.2 原理 168
4.3.3 常見的POST 169
4.4 請求的幾種方式 175
4.4.1 表單 176
4.4.2 AJAX 176
4.4.3 命令行 177
4.4.4 HTTP模塊 178
4.4.5 工具軟件 183
4.4.6 測試 183
4.5 API開發(fā) 185
4.5.1 API的簡單寫法 185
4.5.2 響應(yīng)處理 189
4.5.3 RESTful API 190
4.5.4 API訪問鑒權(quán) 192
4.5.5 OAuth鑒權(quán) 194
4.6 常用中間件 195
4.6.1 會話 196
4.6.2 ETag 198
4.6.3 驗證碼 199
4.6.4 限制訪問頻率 201
4.7 本章小結(jié) 203
第5章 數(shù)據(jù)庫基礎(chǔ) 204
5.1 入門 204
5.1.1 選擇哪個數(shù)據(jù)庫 204
5.1.2 了解MVC里的模型 206
5.1.3 模型的代碼 207
5.1.4 代碼組織結(jié)構(gòu) 209
5.2 MongoDB的安裝與部署 210
5.2.1 安裝與部署的方式 211
5.2.2 在macOS上安裝 212
5.2.3 在Ubuntu上安裝 212
5.2.4 在Windows上安裝 213
5.2.5 更好的啟動方式 213
5.3 Mongoose基礎(chǔ) 214
5.3.1 簡介 214
5.3.2 入門 215
5.3.3 Hello Mongoose 218
5.3.4 核心概念 221
5.3.5 增刪改查操作 223
5.3.6 Schema的類型 232
5.4 Mongoose進(jìn)階 234
5.4.1 模型擴(kuò)展 234
5.4.2 虛擬屬性 237
5.4.3 回調(diào)鉤子 240
5.4.4 插件機(jī)制 244
5.5 本章小結(jié) 253
第6章 數(shù)據(jù)庫進(jìn)階 254
6.1 分頁 254
6.1.1 使用skip和limit實現(xiàn)分頁 255
6.1.2 使用find和limit實現(xiàn)分頁 256
6.1.3 ObjectID的組成 257
6.1.4 客戶端生成ObjectID 259
6.2 關(guān)聯(lián)查詢 259
6.2.1 聚合函數(shù) 260
6.2.2 聚合管道 261
6.2.3 MapReduce 263
6.2.4 關(guān)聯(lián)關(guān)系 264
6.2.5 aggregation 266
6.3 事務(wù) 270
6.3.1 二階段提交法 270
6.3.2 回滾操作 273
6.4 性能調(diào)優(yōu) 274
6.4.1 profile 275
6.4.2 explain 275
6.4.3 索引優(yōu)化 276
6.4.4 MongoDB的連接問題 282
6.4.5 MongooseDao 289
6.4.6 異步流程控制 296
6.5 本章小結(jié) 303
第7章 前端視圖模板 304
7.1 靜態(tài)服務(wù)器 304
7.1.1 public目錄 304
7.1.2 實現(xiàn)原理 306
7.1.3 靜態(tài)服務(wù) 307
7.1.4 預(yù)處理中間件 314
7.2 使用模板引擎進(jìn)行動態(tài)渲染 316
7.2.1 模板引擎原理 316
7.2.2 模板引擎規(guī)則 324
7.2.3 Vue 333
7.3 Webpack 342
7.3.1 解決痛點(diǎn) 343
7.3.2 模塊規(guī)范 344
7.3.3 模塊加載器 345
7.3.4 模塊打包器 345
7.3.5 Webpack詳解 346
7.4 前后端分離 357
7.5 前端渲染 357
7.5.1 客戶端渲染 357
7.5.2 服務(wù)器端渲染 358
7.5.3 React服務(wù)器端渲染 360
7.5.4 Serverless時代的渲染層 363
7.6 本章小結(jié) 365
第8章 項目實戰(zhàn) 366
8.1 入門 366
8.1.1 Docker 366
8.1.2 Docker Compose 369
8.1.3 環(huán)境變量 370
8.1.4 啟動服務(wù)器 373
8.2 Egg.js框架 373
8.2.1 使用腳手架 374
8.2.2 目錄說明 375
8.2.3 啟動服務(wù)器 379
8.2.4 代碼結(jié)構(gòu) 381
8.2.5 內(nèi)置對象 384
8.2.6 代碼調(diào)試 386
8.2.7 插件擴(kuò)展機(jī)制 387
8.3 egg-cnode源碼 388
8.3.1 目錄約定 388
8.3.2 app目錄 390
8.3.3 數(shù)據(jù)庫連接 391
8.3.4 模型定義 392
8.3.5 從Controller到Service 393
8.3.6 視圖渲染 396
8.3.7 數(shù)據(jù)模型 399
8.3.8 API開發(fā) 400
8.3.9 測試 403
8.3.10 鑒權(quán) 404
8.3.11 后臺管理 412
8.3.12 參數(shù)校驗 412
8.4 本章小結(jié) 413