本書系統(tǒng)地講解了使用Express開發(fā)動態(tài)Web應用的流程和步驟。作者不僅講授了開發(fā)公共站點及REST API的基礎知識,還講解了構建單頁、多頁及混合Web應用的規(guī)劃方式及最佳實踐。為了適應中間件及相關工具在過去幾年里的變化,第2版更側重于Express作為提供API的后端服務器,并新增了單頁應用的示例。
本書適合希望使用JavaScript、Node、Express構建Web應用的開發(fā)人員閱讀。
1、全書代碼資源免費贈送并且可以下載
2、美國VMS技術總監(jiān)傾力打造的高效開發(fā)web的Javascript框架指導書
3、借助Express框架打造動態(tài)高性能Web應用
4、互聯網大廠前端開發(fā)同學的必備技能書
伊桑.布朗(Ethan Brown),美國VMS公司技術總監(jiān),負責公司旗艦產品的架構和實現。他擁有20多年的編程經驗,在Node、Express、JavaScript、React的實踐方面擁有獨到見解。
前言 xvii
第 1 章 Express是什么 1
1.1 JavaScript的革命 1
1.2 Express簡介 2
1.3 服務器端應用和客戶端應用 4
1.4 Express簡史 4
1.5 Node:另一種Web服務器 5
1.6 Node生態(tài)系統(tǒng) 6
1.7 開源協議 7
1.8 小結 8
第 2 章 Node的世界 9
2.1 獲取Node 9
2.2 使用終端 10
2.3 編輯器 11
2.4 npm 11
2.5 用Node做一個簡單的Web服務器 12
2.5.1 Hello world 13
2.5.2 事件驅動編程 14
2.5.3 路由 14
2.5.4 提供靜態(tài)資源 15
2.6 進入Express 17
第 3 章 Express的方式 18
3.1 腳手架 18
3.2 草地鷚旅游網站 19
3.3 初始工作 19
3.4 視圖與布局 22
3.5 靜態(tài)文件與視圖 25
3.6 視圖中的動態(tài)內容 26
3.7 小結 26
第 4 章 項目整頓 27
4.1 項目文件與目錄結構 27
4.2 最佳實踐 28
4.3 版本控制 28
4.4 在本書學習中如何使用Git 29
4.4.1 親手錄入 29
4.4.2 使用官方版本庫 30
4.5 npm包 31
4.6 項目元數據 32
4.7 Node模塊 32
4.8 小結 34
第 5 章 質量保證 35
5.1 QA計劃 36
5.2 QA:是否值得 37
5.3 邏輯與表示 38
5.4 測試類型 38
5.5 QA技術 38
5.6 安裝和配置Jest 39
5.7 單元測試 40
5.7.1 模擬 40
5.7.2 為可測試性而重構應用 40
5.7.3 寫第 一個測試 41
5.7.4 測試維護 43
5.7.5 代碼覆蓋率 43
5.8 集成測試 44
5.9 Linting 47
5.10 持續(xù)集成 50
5.11 小結 51
第 6 章 request和response對象 52
6.1 URL的各個組成部分 52
6.2 HTTP請求方法 53
6.3 請求頭 54
6.4 響應頭 54
6.5 互聯網媒體類型 55
6.6 請求的Body 55
6.7 request對象 55
6.8 response對象 57
6.9 深入源代碼 59
6.10 按功能歸納 59
6.10.1 渲染內容 60
6.10.2 處理表單 61
6.10.3 API服務 62
6.11 小結 63
第 7 章 視圖模板——使用Handlebars 64
7.1 何時使用模板 65
7.2 選擇模板引擎 66
7.3 Pug:另辟蹊徑 66
7.4 Handlebars基礎 67
7.4.1 注釋 69
7.4.2 代碼塊 69
7.4.3 服務器端模板 70
7.4.4 視圖和布局 71
7.4.5 在Express中使用(或不使用)布局 73
7.4.6 sections 73
7.4.7 partial模板 74
7.4.8 完善模板 76
7.5 小結 77
第 8 章 表單處理 78
8.1 把客戶端數據發(fā)送到服務器 78
8.2 HTML表單 78
8.3 表單的編碼 79
8.4 處理表單的不同做法 80
8.5 使用Express處理表單 81
8.6 使用fetch發(fā)送表單數據 83
8.7 文件上傳 85
8.8 提升文件上傳的UI 88
8.9 小結 88
第 9 章 Cookie和Session 89
9.1 提取敏感信息 91
9.2 Express中的Cookie 91
9.3 查看Cookie 93
9.4 Session 93
9.4.1 內存存儲 94
9.4.2 使用Session 95
9.5 使用Session實現flash消息 95
9.6 Session的用途 97
9.7 小結 97
第 10 章 中間件 98
10.1 基本原理 99
10.2 中間件示例 99
10.3 常用中間件 102
10.4 第三方中間件 104
10.5 小結 104
第 11 章 發(fā)送郵件 105
11.1 SMTP、MSA和MTA 105
11.2 接收郵件 106
11.3 郵件頭 106
11.4 郵件格式 106
11.5 HTML郵件 107
11.6 Nodemailer 107
11.6.1 發(fā)送郵件 108
11.6.2 發(fā)送給多個收件人 109
11.7 群發(fā)郵件更好的選擇 110
11.8 發(fā)送HTML郵件 110
11.8.1 HTML郵件中的圖片 111
11.8.2 使用視圖來發(fā)送HTML郵件 111
11.8.3 封裝郵件功能 113
11.9 小結 114
第 12 章 考慮生產環(huán)境中的問題 115
12.1 運行環(huán)境 115
12.2 特定環(huán)境的配置 116
12.3 運行Node進程 117
12.4 網站的擴展 118
12.4.1 使用應用集群實現水平擴展 119
12.4.2 處理未捕獲的異常 121
12.4.3 使用多臺服務器完成水平擴展 123
12.5 監(jiān)控網站的運行 123
12.6 壓力測試 124
12.7 小結 125
第 13 章 持久化 126
13.1 文件系統(tǒng)持久化 126
13.2 云持久化 128
13.3 數據庫持久化 129
13.3.1 關于性能的提醒 129
13.3.2 數據庫層抽象 130
13.3.3 設置MongoDB 131
13.3.4 Mongoose 132
13.3.5 使用Mongoose連接數據庫 132
13.3.6 創(chuàng)建模式和模型 133
13.3.7 使用種子數據初始化 134
13.3.8 獲取數據 136
13.3.9 更新數據 138
13.3.10 PostgreSQL 139
13.3.11 新增數據 145
13.4 使用數據庫存儲Session 146
13.5 小結 148
第 14 章 路由 149
14.1 路由與SEO 151
14.2 子域名 151
14.3 路由處理函數也是中間件 152
14.4 路由路徑和正則表達式 154
14.5 路由參數 154
14.6 組織路由 155
14.7 在模塊中聲明路由 156
14.8 合乎邏輯地分組路由 157
14.9 自動化渲染視圖 158
14.10 小結 159
第 15 章 REST API和JSON 160
15.1 JSON和XML 161
15.2 我們的API 161
15.3 API錯誤報告 162
15.4 跨域資源共享 163
15.5 測試 164
15.6 使用Express提供API 166
15.7 小結 167
第 16 章 單頁應用 168
16.1 Web應用開發(fā)簡史 168
16.2 SPA技術選擇 171
16.3 創(chuàng)建React應用 172
16.4 React基本概念 172
16.4.1 主頁 174
16.4.2 路由 176
16.4.3 度假產品頁——可視化設計 178
16.4.4 度假產品頁——跟服務器端集成 179
16.4.5 向服務器發(fā)送信息 181
16.4.6 狀態(tài)管理 184
16.4.7 部署選擇 185
16.5 小結 185
第 17 章 靜態(tài)內容 187
17.1 性能上的考量 188
17.2 內容分發(fā)網絡(CDN) 189
17.3 為CDN而設計 189
17.3.1 服務器端渲染的網站 190
17.3.2 單頁應用 190
17.4 緩存靜態(tài)資源 191
17.5 變更靜態(tài)內容 192
17.6 小結 193
第 18 章 安全 194
18.1 HTTPS 194
18.1.1 生成自己的證書 195
18.1.2 使用免費的證書中心 196
18.1.3 購買證書 196
18.1.4 為Express應用啟用HTTPS 198
18.1.5 有關端口的說明 199
18.1.6 HTTPS與代理 200
18.2 跨站請求偽造 201
18.3 認證 202
18.3.1 認證與授權 202
18.3.2 使用密碼認證的問題 203
18.3.3 第三方認證 203
18.3.4 在數據庫里存儲用戶信息 204
18.3.5 認證與注冊及用戶體驗 205
18.3.6 Passport 205
18.3.7 基于角色的授權 214
18.3.8 增加認證提供者 215
18.4 小結 216
第 19 章 集成第三方API 217
19.1 社交媒體 217
19.1.1 社交媒體插件與網站性能 217
19.1.2 搜索推文 218
19.1.3 展現推文 221
19.2 地理編碼 223
19.2.1 使用谷歌生成地理編碼 223
19.2.2 為你的數據做地理編碼 225
19.2.3 顯示地圖 227
19.3 天氣數據 228
19.4 小結 230
第 20 章 調試 231
20.1 調試原則第 一條 231
20.2 利用REPL和控制臺 232
20.3 使用Node的內建調試器 233
20.4 Node調試客戶端 233
20.5 調試異步函數 237
20.6 調試Express 237
20.7 小結 239
第 21 章 上線 240
21.1 域名注冊與托管 240
21.1.1 域名系統(tǒng) 241
21.1.2 安全 241
21.1.3 頂級域名 242
21.1.4 子域名 243
21.1.5 域名服務器 243
21.1.6 托管服務 245
21.1.7 部署 247
21.2 小結 250
第 22 章 維護 251
22.1 維護的原則 251
22.1.1 長遠規(guī)劃 251
22.1.2 使用源代碼控制 253
22.1.3 使用問題跟蹤系統(tǒng) 253
22.1.4 保持良好的“衛(wèi)生習慣” 253
22.1.5 不要拖延 253
22.1.6 例行QA核查 254
22.1.7 監(jiān)控分析 254
22.1.8 優(yōu)化性能 255
22.1.9 優(yōu)先跟蹤潛在客戶 255
22.1.10 避免“不可見”的故障 256
22.2 代碼重用與重構 257
22.2.1 私有npm倉庫 257
22.2.2 中間件 257
22.3 小結 259
第 23 章 更多資源 260
23.1 在線文檔 260
23.2 期刊 261
23.3 Stack Overflow 261
23.4 對Express做貢獻 263
23.5 小結 265
關于作者 266
關于封面 266