Node.js開發(fā)簡單,性能極好,一經發(fā)布便成了明星級項目。隨著大前端領域的蓬勃發(fā)展,跨平臺開發(fā)、API構建、Web應用開發(fā)等場景愈加常見,Node.js也成為大前端開發(fā)的必備“神器”。本書主要講解Node.js Web應用開發(fā)涉及的HTTP基礎知識、常用開發(fā)框架、源碼原理、數據庫和項目實戰(zhàn),旨在向讀者展示如何通過Node.js和Koa編寫出更具前端特色的Web應用。本書還講解了Koa中的核心中間件原理,展望了未來Web應用開發(fā)的發(fā)展方向。基于Node.js開發(fā)Web應用具有上手簡單、開發(fā)快速、執(zhí)行高效等特點,非常適合快速迭代,因此各位大前端領域及后端領域的測試、運維、軟件開發(fā)從業(yè)者都可以閱讀本書。
狼叔(網名i5ting),Node.js 技術布道者,“Node全棧”微信公眾號作者,全棧技術實踐者。曾就職于多家知名IT企業(yè),從事前端開發(fā)、后端開發(fā)、數據分析等工作,目前負責公司內的Node.js開發(fā)和基礎框架開發(fā)工作。
目錄
第1章 下一代Web框架Koa 1
1.1 Koa簡介 1
1.1.1 應用場景 2
1.1.2 開發(fā)要點 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代碼調試 26
1.3 Node.js Web框架演進 29
1.3.1 Node.js http模塊 29
1.3.2 最早的Connect 29
1.3.3 曾經扛鼎的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 更多內容 44
1.5 本章小結 48
第2章 Koa的核心擴展機制:中間件 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 默認模板引擎Pug 102
2.3.3 views目錄模板說明 102
2.3.4 consolidate.js 104
2.4 靜態(tài)服務模塊 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 本章小結 109
第3章 HTTP必知必會 110
3.1 請求響應模型 110
3.1.1 請求 112
3.1.2 響應 112
3.1.3 核心要點 114
3.2 HTTPS 127
3.2.1 生成證書 129
3.2.2 驗證與自動續(xù)約 130
3.2.3 Node.js服務器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 本章小結 152
第4章 Koa練習 153
4.1 基礎知識 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 獲取不同參數的3種方法 165
4.2.1 獲取具名參數 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 響應處理 189
4.5.3 RESTful API 190
4.5.4 API訪問鑒權 192
4.5.5 OAuth鑒權 194
4.6 常用中間件 195
4.6.1 會話 196
4.6.2 ETag 198
4.6.3 驗證碼 199
4.6.4 限制訪問頻率 201
4.7 本章小結 203
第5章 數據庫基礎 204
5.1 入門 204
5.1.1 選擇哪個數據庫 204
5.1.2 了解MVC里的模型 206
5.1.3 模型的代碼 207
5.1.4 代碼組織結構 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基礎 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進階 234
5.4.1 模型擴展 234
5.4.2 虛擬屬性 237
5.4.3 回調鉤子 240
5.4.4 插件機制 244
5.5 本章小結 253
第6章 數據庫進階 254
6.1 分頁 254
6.1.1 使用skip和limit實現分頁 255
6.1.2 使用find和limit實現分頁 256
6.1.3 ObjectID的組成 257
6.1.4 客戶端生成ObjectID 259
6.2 關聯查詢 259
6.2.1 聚合函數 260
6.2.2 聚合管道 261
6.2.3 MapReduce 263
6.2.4 關聯關系 264
6.2.5 aggregation 266
6.3 事務 270
6.3.1 二階段提交法 270
6.3.2 回滾操作 273
6.4 性能調優(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 本章小結 303
第7章 前端視圖模板 304
7.1 靜態(tài)服務器 304
7.1.1 public目錄 304
7.1.2 實現原理 306
7.1.3 靜態(tài)服務 307
7.1.4 預處理中間件 314
7.2 使用模板引擎進行動態(tài)渲染 316
7.2.1 模板引擎原理 316
7.2.2 模板引擎規(guī)則 324
7.2.3 Vue 333
7.3 Webpack 342
7.3.1 解決痛點 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 服務器端渲染 358
7.5.3 React服務器端渲染 360
7.5.4 Serverless時代的渲染層 363
7.6 本章小結 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 啟動服務器 373
8.2 Egg.js框架 373
8.2.1 使用腳手架 374
8.2.2 目錄說明 375
8.2.3 啟動服務器 379
8.2.4 代碼結構 381
8.2.5 內置對象 384
8.2.6 代碼調試 386
8.2.7 插件擴展機制 387
8.3 egg-cnode源碼 388
8.3.1 目錄約定 388
8.3.2 app目錄 390
8.3.3 數據庫連接 391
8.3.4 模型定義 392
8.3.5 從Controller到Service 393
8.3.6 視圖渲染 396
8.3.7 數據模型 399
8.3.8 API開發(fā) 400
8.3.9 測試 403
8.3.10 鑒權 404
8.3.11 后臺管理 412
8.3.12 參數校驗 412
8.4 本章小結 413