第1 章歡迎來到Node.js 平颱 1
Node.js 的哲學思想2
小核心2
小模塊2
小接觸麵3
簡單和實用3
認識Node.js 6 和ES2015 4
let 和const 關鍵字5
箭頭函數6
類語法8
增強的對象字麵量10
Map 和Set 集閤11
WeakMap 和WeakSet 集閤13
模闆字麵量14
其他ES2015 特性14
Reactor 模式15
I/O 是緩慢的15
阻塞I/O 15
非阻塞I/O 16
事件多路分解器17
Reactor 模式簡介19
Node.js-libuv 的非阻塞I/O 引擎20
Node.js 的秘訣21
總結21
第2 章Node.js 基礎設計模式 23
迴調模式24
CPS(Continuation Passing Style) 24
同步或異步26
Node.js 迴調約定31
模塊係統及其模式34
揭示模塊模式34
Node.js 模塊解釋35
模塊定義模式42
觀察者模式49
EventEmitter 類49
創建和使用EventEmitter 50
傳播錯誤51
使任何對象可觀察51
同步和異步事件53
EventEmitter 與迴調54
組閤迴調和EventEmitter 55
總結55
第3 章異步控製流模式之迴調函數 56
異步編程的睏難56
創建一個簡單的網絡蜘蛛57
迴調地獄59
使用純JavaScript 60
迴調規則60
應用迴調規則61
順序執行63
並行執行68
有限製的並行執行73
async 庫77
順序執行78
並行執行81
有限製的並行執行81
總結83
第4 章異步控製流模式之ES2015+ 84
promise 84
什麼是promise 85
Promises/A+ 實現87
Node.js 風格函數的promise 化88
順序執行90
並行執行93
有限製的並行執行93
在公共API 中暴露callback 和promise 95
generator 97
generator 基礎97
generator 的異步控製流100
順序執行104
並行執行106
有限製的並行執行108
使用Babel 的async await 111
安裝和運行Babel 112
比較113
總結114
第5 章流編程 115
流的重要性115
緩衝和流116
空間效率117
時間效率118
組閤性121
開始學習流122
流的分類122
可讀流123
可寫流127
雙嚮流(Duplex stream) 132
變換流132
使用管道拼接流135
使用流處理異步流程137
順序執行138
無序並行執行139
無序有限製的並行執行143
順序並行執行145
管道模式146
組閤流146
復製流149
閤並流150
復用和分解152
總結159
第6 章設計模式 160
工廠模式161
創建對象的通用接口161
一種封裝的機製162
構建一個簡單的代碼分析器164
可組閤的工廠函數166
擴展169
揭示構造函數170
隻讀事件觸發器171
擴展172
代理模式173
實現代理模式的方法174
不同方法的比較176
創建日誌記錄的寫入流176
生態係統中的代理模式——函數鈎子與麵嚮行為編程(AOP) 178
ES2015 中的Proxy 對象178
擴展180
裝飾者模式(Decorator) 180
實現裝飾者模式的方法181
裝飾一個LevelUP 數據庫182
擴展185
適配器模式(Adapter) 185
通過文件係統API 來使用LevelUP 數據庫186
擴展189
策略模式(Strategy) 189
支持多種格式的配置對象190
擴展193
狀態模式193
實現一個基本的自動防故障套接字194
模闆模式(Template) 199
配置管理器模闆199
擴展201
中間件(Middleware) 202
Express 中的中間件202
設計模式中的中間件203
為ØMQ 創建中間件框架204
在Koa 中使用生成器的中間件210
命令模式(Command) 213
靈活的設計模式214
總結218
第7 章連接模塊 220
模塊和依賴221
Node.js 中最常見的依賴221
內聚和耦閤222
有狀態的模塊222
連接模塊模式224
硬編碼依賴224
依賴注入229
服務定位器234
依賴注入容器239
連接插件243
插件作為包243
擴展點245
插件控製與應用程序控製的擴展245
實現注銷插件248
總結256
第8 章通用JavaScript 的Web 應用程序 257
與瀏覽器端共享代碼258
共享模塊258
Webpack 簡介262
Webpack 的魔力263
Webpack 的優點264
使用ES2015 和Webpack 265
跨平颱開發基礎267
運行時代碼分支268
構建時代碼分支269
模塊交換271
用於跨平颱開發的設計模式273
React 介紹274
第一個React 組件275
JSX 是什麼277
配置Webpack 以實現JSX 轉換279
在瀏覽器中渲染280
React 路由庫281
創建通用JavaScript 應用程序286
創建可用的組件287
服務端渲染289
通用渲染和路由293
通用數據檢索294
總結304
第9 章高級異步編程技巧 305
需要異步初始化的模塊305
規範解決方案306
預初始化隊列307
題外話311
異步批處理和緩存312
實現沒有緩存或批處理的服務器312
異步請求批處理314
異步請求緩存316
使用promise 進行批處理和緩存319
運行CPU 綁定的任務322
解決子集和問題322
交叉使用setImmediate 325
使用多進程328
總結335
第10 章擴展與架構模式 336
應用程序擴展介紹337
擴展Node.js 應用程序337
可擴展性的三個維度337
剋隆和負載均衡339
集群模塊340
處理有狀態通信348
使用反嚮代理進行擴展350
使用服務注冊錶354
對等負載均衡360
分解復雜的應用程序362
單體式架構362
微服務架構364
微服務架構中的集成模式367
總結372
第11 章消息傳遞與集成模式 374
消息係統的基礎375
單嚮和請求/應答模式375
消息類型376
異步消息和隊列377
對等或基於代理的消息378
發布/訂閱模式379
構建簡約的實時聊天應用程序380
使用Redis 作為消息代理383
使用ØMQ 對等發布/訂閱385
持久訂閱者389
管道和任務分配模式396
ØMQ 扇齣/扇入模式397
使用AMQP 實現管道和競爭消費者模式401
請求/應答模式406
關聯標識符406
返迴地址410
總結415
· · · · · · (
收起)