Node.js開發(fā)簡單,性能極好,一經(jīng)發(fā)布便成了明星級項目。隨著大前端領(lǐng)域的蓬勃發(fā)展,跨平臺開發(fā)、API構(gòu)建、Web應(yīng)用開發(fā)等場景愈加常見,Node.js也成為大前端開發(fā)的必備“神器”。本書聚焦于Node.js高級技術(shù)。第1章介紹如何編寫npm模塊,其中涉及對許多常用模塊的解析。第2章介紹如何編寫企業(yè)級Web開發(fā)框架,主要剖析了開發(fā)框架的流程。第3章介紹如何構(gòu)建具有Node.js特色的服務(wù),著重講解了頁面即服務(wù)的概念。第4章介紹服務(wù)器部署與性能調(diào)優(yōu)的相關(guān)知識。第5章介紹TDD和BDD理念,以及如何編寫測試用例,同時分享了筆者關(guān)于開源和自學(xué)的看法。基于Node.js不斷進階,實現(xiàn)高級應(yīng)用開發(fā)是符合技術(shù)趨勢的,也是全棧工程師必須掌握的技能。因此,各位大前端領(lǐng)域及后端領(lǐng)域的測試、運維、軟件開發(fā)從業(yè)者都適合閱讀本書。
桑世龍,狼叔(網(wǎng)名i5ting),現(xiàn)為阿里巴巴前端技術(shù)專家,去哪兒網(wǎng)前前端架構(gòu)師,Node.js 技術(shù)布道者,領(lǐng)域頭部公眾號“Node全!边\營者。曾就職于多家知名IT企業(yè),從事前端開發(fā)、后端開發(fā)、數(shù)據(jù)分析等工作,目前負責(zé)公司內(nèi)的Node.js開發(fā)和基礎(chǔ)框架開發(fā)工作。
第1章 自己動手寫npm模塊 1
1.1 基礎(chǔ)技能 1
1.1.1 環(huán)境變量 2
1.1.2 Zsh 2
1.1.3 Vim 3
1.1.4 Ack 4
1.1.5 Autojump 5
1.1.6 Git和GitHub 5
1.1.7 查詢文檔 6
1.2 編寫Node.js模塊 6
1.2.1 初始化模塊 6
1.2.2 普通模塊 7
1.2.3 二進制模塊 9
1.3 npm技巧 13
1.3.1 npm run 13
1.3.2 配置 13
1.3.3 鉤子 15
1.3.4 npm link 16
1.3.5 自定義安裝 16
1.3.6 模塊瘦身 17
1.3.7 postinstall 17
1.3.8 路徑 18
1.3.9 模塊依賴圖 20
1.4 實例講解 22
1.4.1 kp 22
1.4.2 je 27
1.4.3 lazyclone 30
1.5 編寫腳手架 31
1.5.1 初始化模塊 32
1.5.2 CLI二進制模塊 32
1.5.3 使用模板引擎 34
1.5.4 解析CLI參數(shù)和路徑 35
1.5.5 npm發(fā)布 40
1.6 開源周邊 40
1.6.1 持續(xù)集成 40
1.6.2 測試覆蓋率 45
1.6.3 徽章 45
1.6.4 反向?qū)W習(xí) 46
1.7 推薦模塊 46
1.7.1 debug 47
1.7.2 GitBook 48
1.7.3 colors和chalk 49
1.7.4 mkdirp 50
1.7.5 shelljs 50
1.7.6 moment 51
1.7.7 LRU緩存 52
1.7.8 semver 53
1.7.9 xtend 55
1.7.10 require-directory 56
1.7.11 yargs 57
1.8 本章小結(jié) 59
第2章 自己動手編寫企業(yè)級Web開發(fā)框架 60
2.1 特色Web框架 60
2.1.1 LoopBack 61
2.1.2 Nest 63
2.1.3 ThinkJS 66
2.1.4 Egg.js 69
2.1.5 Next.js 70
2.1.6 Redwood 72
2.1.7 strapi 76
2.2 自己動手寫框架 78
2.2.1 基礎(chǔ)知識 78
2.2.2 生成項目 81
2.2.3 添加Mongoose 91
2.2.4 添加MVC目錄 96
2.2.5 庖丁解Views 103
2.2.6 腳手架 112
2.2.7 靜態(tài)API模擬 114
2.2.8 更多實踐 122
2.3 本章小結(jié) 127
第3章 構(gòu)建具有Node.js特色的服務(wù) 128
3.1 服務(wù)概覽 128
3.1.1 架構(gòu)演變 128
3.1.2 從大而全到小而美 129
3.1.3 微服務(wù)應(yīng)用 131
3.1.4 BFF中間層 134
3.1.5 SFF托管 137
3.2 使用Node.js優(yōu)化頁面渲染 140
3.2.1 BigPipe 140
3.2.2 服務(wù)器端渲染(SSR) 150
3.2.3 漸進式Web應(yīng)用(PWA) 153
3.2.4 同構(gòu)開發(fā) 158
3.3 頁面即服務(wù) 162
3.3.1 頁面獨立 162
3.3.2 模塊拆分 164
3.3.3 BigView 165
3.3.4 API Proxy 175
3.3.5 源碼說明 176
3.4 使用Node.js開發(fā)RPC服務(wù) 178
3.4.1 RPC原理 178
3.4.2 通信層協(xié)議設(shè)計 179
3.4.3 如何實現(xiàn)RPC通信協(xié)議 180
3.4.4 DNode 181
3.4.5 Senaca 182
3.4.6 Moleculer 185
3.4.7 通用RPC 189
3.4.8 服務(wù)發(fā)現(xiàn)與治理 190
3.4.9 典型用法 192
3.5 使用Node.js開發(fā)獨立的API層 193
3.5.1 GraphQL 193
3.5.2 Micro框架 197
3.5.3 API網(wǎng)關(guān) 197
3.5.4 在線服務(wù) 199
3.6 本章小結(jié) 199
第4章 服務(wù)器部署與性能調(diào)優(yōu) 200
4.1 服務(wù)器部署 200
4.1.1 服務(wù)器選購 201
4.1.2 手動部署 204
4.1.3 通過Docker部署 211
4.1.4 自動部署 224
4.1.5 APM與監(jiān)控 231
4.2 性能調(diào)優(yōu) 239
4.2.1 基礎(chǔ)知識 239
4.2.2 立體分析 246
4.2.3 深度性能調(diào)優(yōu) 250
4.3 分析Easy-monitor 260
4.4 本章小結(jié) 262
第5章 測試、開源與自學(xué) 263
5.1 測試入門 264
5.1.1 什么是測試 264
5.1.2 TDD和BDD 265
5.1.3 最小化問題 268
5.1.4 Baretest 269
5.1.5 TAP和Tape 271
5.1.6 Mocha 274
5.1.7 Jest 278
5.2 測試進階 283
5.2.1 測試的好處 283
5.2.2 紅到綠工作流 284
5.2.3 Cucumber 285
5.2.4 Spy、Stub和Mock 288
5.2.5 持續(xù)集成 291
5.2.6 如何編寫測試框架 292
5.2.7 如何打造開源項目 293
5.2.8 進一步學(xué)習(xí)TypeScript 294
5.3 開源帶來的機會和思考 310
5.3.1 Clipanion 310
5.3.2 機會與挑戰(zhàn) 312
5.3.3 敏感且會學(xué) 313
5.3.4 成就更好的自己 313
5.4 本章小結(jié) 314