Koa 開發:入門、進階與實戰
內容描述
這是一本能指導你零基礎掌握Koa完整知識體係並深入理解Node.js難點的著作,
將帶領你在成為全棧工程師的道路上邁出堅實的一步。
本書作者是字節跳動抖音電商團隊的前端架構師,
曾利用Koa和Node.js等技術從零開發過一款可對標Egg的BFF框架,
並在生產環境中能支撐上千個線上服務,在Koa和Node.js方面積累了豐富的經驗。
這本書以入門、進階、實戰為學習曲線,從基本用法、底層實現、
常見場景解決方案、難點和重點等等角度對Koa和Node.js進行了詳細的講解。
主要包括如下如下知識點:
(1)Koa的基本概念和完整用法,構建完整的Koa知識體系;
(2)Koa的源碼實現和底層原理分析;
(3)Koa在實際業務中遇到的問題及其解決方案;
(4)從零搭建一個企業級BFF框架;
(5)BFF框架的架構設計、工程建設以及常見業務場景的解決方案;
(6)Node.js中比較常見但難以理解的概念和知識點;
(7)Node.js底層架構解析。
全書有大量實例和代碼,能幫助讀者在實踐中迅速從新人成長為高手。
目錄大綱
【第一部分 Koa基礎】
●第1章 Koa介紹2
1.1 Koa的誕生2
1.2 如何全面掌握Koa3
1.3 環境準備5
1.4 本章小結7
●第2章 Koa入門8
2.1 中間件的使用9
2.2 路由該怎麼寫11
2.2.1 原生路由實現11
2.2.2 利用koa-router中間件實現12
2.3 靜態服務器14
2.3.1 koa-static中間件的使用15
2.3.2 如何實現一個靜態服務器16
2.4 模板引擎18
2.4.1 ejs模板的使用18
2.4.2 pug模板的使用20
2.5 處理請求數據21
2.6 Cookie和Session22
2.6.1 你真的了解Cookie嗎23
2.6.2 Session的秘密26
2.7 文件上傳34
2.8 跨域問題38
2.9 重寫URL43
2.10 優雅的錯誤處理44
2.11 本章小結48
【第二部分 Koa進階】
●第3章 Koa源碼解析50
3.1 Koa目錄結構50
3.2 Application都做了些什麼52
3.2.1 Koa創建服務的原理52
3.2.2 中間件實現原理55
3.2.3 如何封裝ctx60
3.2.4 handleRequest和respond做了什麼63
3.2.5 異常處理66
3.3 Context的核心實現68
3.3.1 委託機制68
3.3.2 Cookie的操作73
3.4 request的具體實現75
3.5 response的具體實現82
3.6 本章小結86
●第4章 Koa在業務場景中的應用87
4.1 路由技巧87
4.1.1 路由分割88
4.1.2 文件路由91
4.2 用戶鑑權機制94
4.2.1 JWT鑑權94
4.2.2 單點登錄101
4.3 數據存儲115
4.3.1 數據庫的使用115
4.3.2 Elasticsearch的接入122
4.4 進程管理130
4.4.1 進程的概念130
4.4.2 創建多進程130
4.4.3 進程通信134
4.5 日誌處理136
4.5.1 log4js牛刀小試136
4.5.2 日誌級別137
4.5.3 日誌分類139
4.5.4 日誌分割141
4.6 本章小結142
【第三部分 Koa實戰】
●第5章 搭建一個企業級BFF框架144
5.1 搭建BFF框架的好處144
5.1.1 技術成長145
5.1.2 個人影響力145
5.2 搭建完整框架145
5.2.1 主工程搭建146
5.2.2 框架核心工程147
5.2.3 example工程148
5.2.4 本地開發調試150
5.3 環境區分152
5.3.1 環境配置152
5.3.2 整合配置153
5.4 服務啟動模塊154
5.4.1 hooks設計154
5.4.2 服務配置157
5.4.3 服務啟動模塊實現157
5.5 路由模塊159
5.5.1 路由模式配置159
5.5.2 文件路由159
5.5.3 koa-router路由162
5.6 靜態服務器模塊165
5.7 cors模塊167
5.7.1 跨域現象167
5.7.2 cors相關配置169
5.7.3 cors核心實現170
5.8 自定義中間件174
5.8.1 中間件加載順序174
5.8.2 加載自定義中間件175
5.9 登錄模塊177
5.9.1 鑑權模塊實現177
5.9.2 Cookie的配置179
5.10 制定模板180
5.10.1 加載模板180
5.10.2 自定義模板181
5.11 bodyparser模塊186
5.12 Redis模塊187
5.12.1 Redis配置188
5.12.2 Redis對象掛載188
5.12.3 使用Redis190
5.13 MySQL模塊191
5.13.1 數據庫配置191
5.13.2 數據庫連接192
5.13.3 數據庫操作193
5.14 Elasticsearch模塊194
5.14.1 連接配置194
5.14.2 掛載194
5.14.3 操作Elasticsearch195
5.15 日誌模塊196
5.15.1 業務日誌有哪些197
5.15.2 日誌模塊實現197
5.15.3 具體使用場景200
5.16 單元測試203
5.16.1 mocha和chai203
5.16.2 編寫測試用例204
5.17 發布npm包206
5.18 本章小結207
【第四部分 Node】
●第6章 Node中的重要概念210
6.1 模塊機制210
6.1.1 CommonJS規範211
6.1.2 模塊加載原理212
6.2 Node中的I/O213
6.2.1 什麼是無阻塞I/O213
6.2.2 無阻塞I/O原理213
6.2.3 事件循環214
6.3 進程與集群215
6.3.1 進程215
6.3.2 集群217
6.4 進程守護219
6.4.1 如何實現進程守護功能219
6.4.2 進程管理工具pm2221
6.5 Buffer和Stream225
6.6 垃圾回收原理227
6.6.1 V8內存結構227
6.6.2 垃圾回收機制229
6.7 本章小結230
●第7章 Node底層解析231
7.1 Node整體架構231
7.2 深入理解Addon233
7.2.1 編譯工具node-gyp233
7.2.2 Node插件開發234
7.3 V8如何解析代碼237
7.3.1 V8的重要組成模塊237
7.3.2 AST是什麼238
7.3.3 如何查看字節碼和彙編代碼239
7.4 libuv架構240
7.5 本章小結242
作者介紹
劉江虹
字節跳動抖音電商前端架構師,擁有多年前端架構工作經驗。
獨立開發過一款可對標Egg的BFF企業級框架,支撐公司線上服務超過1000個。
全棧前端技術專家,具備豐富的Node實戰經驗。
著有暢銷書《React.js實戰》