狼書 (捲2):Node.js Web 應用開發

狼叔

買這商品的人也買了...

商品描述

Node.js開發簡單,性能極好,一經發布便成了明星級項目。隨著大前端領域的蓬勃發展,跨平臺開發、API構建、Web應用開發等場景愈加常見,Node.js也成為大前端開發的必備“神器”。本書主要講解Node.js Web應用開發涉及的HTTP基礎知識、常用開發框架、源碼原理、數據庫和項目實戰,旨在向讀者展示如何通過Node.js和Koa編寫出更具前端特色的Web應用。本書還講解了Koa中的核心中間件原理,展望了未來Web應用開發的發展方向。基於Node.js開發Web應用具有上手簡單、開發快速、執行高效等特點,非常適合快速迭代,因此各位大前端領域及後端領域的測試、運維、軟件開發從業者都可以閱讀本書。

作者簡介

狼叔(網名i5ting),Node.js 技術佈道者,“Node全棧”微信公眾號作者,全棧技術實踐者。曾就職於多家知名IT企業,從事前端開發、後端開發、數據分析等工作,目前負責公司內的Node.js開發和基礎框架開發工作。

目錄大綱

 

第1章下一代Web框架Koa 1
1.1 Koa簡介1
1.1.1應用場景2
1.1.2開發要點3
1.1.3 Koa入門4
1.1.4為什麼選擇Koa 7
1.2 Koa腳手架8
1.2.1安裝Koa生成器9
1.2.2創建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開發框架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靜態服務模塊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驗證與自動續約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協議支持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狀態碼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開發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性能調優274
6.4.1 profile 275
6.4.2 explain 275
6.4.3索引優化276
6.4.4 MongoDB的連接問題282
6.4.5 MongooseDao 289
6.4.6異步流程控制296
6.5本章小結303
 

第7章前端視圖模板304
7.1靜態服務器304
7.1.1 public目錄304
7.1.2實現原理306
7.1.3靜態服務307
7.1 .4預處理中間件314
7.2使用模板引擎進行動態渲染316
7.2.1模板引擎原理316
7.2.2模板引擎規則324
7.2.3 Vue 333
7.3 Webpack 342
7.3.1解決痛點343
7.3.2模塊規範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章項目實戰366
8.1入門366
8.1.1 Docker 366
8.1.2 Docker Compose 369
8.1.3環境變量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開發400
8.3.9測試403
8.3.10鑑權404
8.3.11後台管理412
8.3. 12參數校驗412
8.4本章小結413