內容簡介
Node.js 10已經進入LTS時代!其套用場景已經從腳手架、輔助前端開發(如SSR、PWA等)擴展到API中間層、代理層及專業的後端開發。Node.js在企業Web開發領域也日漸成熟,無論是在API中間層,還是在微服務中都得到了非常好的落地。本書將通過Web開發框架Koa2,進入Node.js的主戰場!本書系統講解了在實戰項目中使用Koa框架開發Web套用的流程和步驟。第1章介紹Node.js的安裝、開發工具及調試。 第2章和第3章介紹搭建Koa實戰項目的雛形。第4章詳細介紹HTTP基礎知識及其實戰套用。第5章介紹MVC、模板引擎和檔案上傳等實用功能。第6~8章介紹資料庫、單元測試及項目的最佳化與部署。第9~13章介紹從零開始搭建時下火爆的微信小程式前端及後台管理套用的全部過程,以及最終的伺服器部署,包括HTTPS、Nginx。本書示例豐富、側重實戰,以完整的實戰項目貫穿全部章節,並提供書中涉及的所有源碼及部分章節的配套視頻教程,將是前端開發人員立足新領域和後端開發人員了解Node.js並使用Koa2開發Web套用的得力助手。
圖書目錄
第1篇 基礎知識
第1章 Node.js入門 2
1.1 Node.js介紹 2
1.1.1 什麼是Node.js 3
1.1.2 Node.js的歷史和發展過程 4
1.1.3 Node.js的特點和套用場景 7
1.1.4 安裝Node.js 8
1.1.5 實戰演練:使用Node.js搭建一個HTTP Server 10
1.2 NPM 11
1.2.1 NPM介紹 12
1.2.2 NPM模組結構 13
1.2.3 使用NVM控制Node.js版本 16
1.2.4 Web代理工具NProxy 18
1.2.5 實戰演練:在npm.org上發布一個模組 20
1.3 Visual Studio Code編輯器 22
1.3.1 Visual Studio Code的安裝及其功能 22
1.3.2 使用Visual Studio Code調試Node.js 23
1.4 本章小結 25
第2章 遇見Koa 26
2.1 Koa介紹 26
2.1.1 Koa的前世今生 26
2.1.2 Koa的安裝及搭建(視頻演示) 29
2.2 Context對象 30
2.2.1 什麼是Context對象 31
2.2.2 常用屬性和方法 31
2.3 Koa的中間件 35
2.3.1 中間件概念 35
2.3.2 實戰演練:使用中間件獲取回響時間(視頻演示) 38
2.3.3 常用Koa中間件介紹 39
2.4 本章小結 43
第3章 路由 44
3.1 路由介紹 44
3.1.1 路由的概念 45
3.1.2 實戰演練:使用Koa中的簡單路由自定義404頁面 46
3.2 koa-router路由中間件 48
3.2.1 koa-router的安裝和介紹 48
3.2.2 RESTful規範 48
3.2.3 koa-router用法(視頻演示) 50
3.2.4 通過koa-router實現接口的許可權控制 55
3.3 本章小結 58
第4章 HTTP 59
4.1 HTTP介紹 59
4.1.1 HTTP的誕生 59
4.1.2 URI和URL 62
4.1.3 常用的HTTP狀態碼 63
4.1.4 常用的請求方法 63
4.1.5 常用的HTTP首部欄位 64
4.2 HTTP/2 65
4.2.1 採用二進制格式傳輸數據 65
4.2.2 多路復用 65
4.2.3 流的優先權 66
4.2.4 首部壓縮 66
4.2.5 服務端推送 67
4.3 Node.js的querystring模組 67
4.3.1 querystring模組的使用 67
4.3.2 koa-router中的querystring(視頻演示) 68
4.3.3 實戰演練:電影搜尋列表 69
4.4 koa-bodyparser中間件 72
4.4.1 koa-bodyparser介紹 72
4.4.2 koa-bodyparser的使用(視頻演示) 73
4.4.3 實戰演練:實現用戶註冊功能並進行數據解析 74
4.5 本章小結 77
第2篇 套用實戰
第5章 構建Koa Web套用 80
5.1 MVC 80
5.1.1 MVC的發展歷程 81
5.1.2 MVC三層架構 81
5.1.3 在Koa中實現MVC(視頻演示) 83
5.2 模板引擎 87
5.2.1 什麼是模板引擎 88
5.2.2 常見的模板引擎有哪些 88
5.2.3 Nunjucks語法介紹 91
5.2.4 Nunjucks在Koa中的套用(視頻演示) 96
5.3 靜態資源 97
5.3.1 靜態資源的類型 98
5.3.2 koa-static簡介 99
5.3.3 koa-static常用配置(視頻演示) 99
5.3.4 實戰演練:開發登錄驗證頁面(視頻演示) 100
5.4 其他常用開發技巧 103
5.4.1 簡易版koa-json外掛程式開發(視頻演示) 103
5.4.2 使用koa-multer中間件實現檔案上傳 106
5.5 本章小結 110
第6章 資料庫 111
6.1 資料庫介紹 111
6.1.1 什麼是資料庫 111
6.1.2 常見的資料庫 113
6.2 在Koa中套用MySQL資料庫 114
6.2.1 下載安裝MySQL 114
6.2.2 Sequelize介紹 118
6.2.3 實戰演練:客戶信息數據展現 122
6.3 在Koa中套用MongoDB資料庫 126
6.3.1 下載安裝MongoDB 126
6.3.2 Mongoose介紹 128
6.3.3 實戰演練:課程表數據展現 132
6.4 在Koa中套用Redis資料庫 135
6.4.1 什麼是Redis 135
6.4.2 Redis庫介紹 138
6.4.3 實戰演練:持久化用戶Session狀態 141
6.5 本章小結 145
第7章 單元測試 146
7.1 Chai斷言庫 147
7.1.1 Chai的介紹和安裝 147
7.1.2 Chai的使用 147
7.2 Mocha框架 149
7.2.1 Mocha的介紹和安裝 150
7.2.2 Mocha的使用 150
7.3 SuperTest測試RESTful API 154
7.3.1 SuperTest的介紹和安裝 154
7.3.2 SuperTest的使用 154
7.4 其他常用工具 155
7.4.1 Nock模擬伺服器回響 156
7.4.2 Nyc測試覆蓋率 157
7.5 本章小結 159
第8章 最佳化與部署 161
8.1 服務最佳化 161
8.1.1 使用log4js記錄日誌(視頻演示) 162
8.1.2 自定義錯誤頁(視頻演示) 168
8.1.3 異常捕獲處理 173
8.1.4 實戰演練:最佳化Web開發項目結構(視頻演示) 176
8.2 部署 179
8.2.1 Node.js進程管理器PM2 179
8.2.2 套用容器引擎Docker 182
8.2.3 線上免費開源集成Travis CI 185
8.2.4 利用Nginx部署HTTPS 189
8.3 服務監控 192
8.3.1 Node.js服務性能指標及採集 192
8.3.2 日誌分析系統ELK 196
8.3.3 Keymetrics監控雲服務 197
8.4 本章小結 199
第3篇 項目實戰:從零開始搭建微信小程式後台
第9章 雲相冊功能介紹和準備工作 203
9.1 套用介紹 204
9.2 小程式開發賬戶申請 206
9.3 準備域名 209
9.3.1 註冊域名 209
9.3.2 實名認證 211
9.3.3 域名備案 212
9.4 準備雲伺服器 216
9.5 配置DNS解析 218
9.6 本章小結 221
第10章 雲相冊服務開發 222
10.1 小程式登錄 222
10.2 掃碼登錄 230
10.3 小程式接口 236
10.3.1 建立數據模型 236
10.3.2 定義相冊接口 238
10.3.3 定義照片接口 242
10.4 後台管理系統接口 244
10.4.1 定義用戶列表接口 244
10.4.2 定義許可權管理接口 246
10.4.3 定義獲取照片接口 247
10.4.4 定義審核照片接口 249
10.5 記錄日誌 249
10.6 本章小結 252
第11章 雲相冊小程式開發 254
11.1 項目介紹 254
11.2 結合Redux實現小程式組件通信 259
11.3 “個人中心”頁面 264
11.4 “新建相冊”頁面 267
11.4.1 自定義組件用法介紹 267
11.4.2 組件事件 269
11.4.3 實現“新建相冊”組件 270
11.5 “相冊列表”頁面 272
11.5.1 展示相冊列表 273
11.5.2 進入指定相冊頁面 274
11.5.3 調用“新建相冊”組件 274
11.6 “照片列表”頁面 275
11.6.1 獲取照片列表數據 276
11.6.2 數據按日期分組 277
11.6.3 上傳照片到當前相冊 278
11.6.4 單擊圖片顯示高清大圖 279
11.7 小程式審核發布 280
11.8 本章小結 282
第12章 雲相冊後台管理系統 283
12.1 整體架構 284
12.1.1 基本檔案結構 285
12.1.2 前端模板結構 287
12.1.3 路由設計 290
12.2 相冊列表及相關功能 292
12.2.1 分類展示照片 293
12.2.2 審核照片 297
12.2.3 HTTP通信 301
12.2.4 分頁控制項 302
12.3 用戶列表及相關功能 304
12.4 登錄與鑒權 309
12.4.1 登錄 310
12.4.2 鑒權中間件 315
12.5 額外展開:SVG動畫效果及其他 317
12.6 本章小結 318
第13章 雲相冊伺服器部署 319
13.1 部署資料庫 321
13.1.1 存儲設定 322
13.1.2 安全策略 323
13.2 部署Nginx 325
13.2.1 安裝OpenResty 325
13.2.2 Nginx配置 326
13.2.3 外掛程式擴展 328
13.3 部署HTTPS 329
13.3.1 強制HTTPS跳轉 329
13.3.2 添加WWW跳轉 330
13.4 配置Koa服務 331
13.5 本章小結 332