《同構(gòu)JavaScript應(yīng)用開發(fā)》將向你展示如何構(gòu)建和維護(hù)屬于自己的同構(gòu)JavaScript應(yīng)用。《同構(gòu)JavaScript應(yīng)用開發(fā)》分為三部分,第一部分描繪不同種類的同構(gòu)JavaScript的輪廓,第二部分介紹關(guān)鍵概念,第三部分提供業(yè)界同行的解決方案案例。通過閱讀本書,你將了解到這種應(yīng)用架構(gòu)日益流行的原因,并將其運用于解決關(guān)鍵的業(yè)務(wù)問題,如頁面加載速度和SEO兼容性。
《同構(gòu)JavaScript應(yīng)用開發(fā)》適合對同構(gòu)JavaScript感興趣的Web開發(fā)人員。
Jason Strimpel,軟件工程師,擁有十余年Web開發(fā)經(jīng)驗。目前任職于沃爾瑪實驗室,負(fù)責(zé)支持UI應(yīng)用的軟件開發(fā)。
Maxime Najim,沃爾瑪實驗室軟件架構(gòu)師,全棧Web開發(fā)者。曾任職于Netflix、蘋果和Yahoo!等公司,在創(chuàng)建大型、伸縮性強、可靠的Web應(yīng)用方面具有豐富經(jīng)驗。
前言 ix
第一部分 簡介與關(guān)鍵概念
第1章 為什么需要同構(gòu)JavaScript 2
1.1 定義同構(gòu)JavaScript 3
1.2 評價其他的Web應(yīng)用架構(gòu)方案 3
1.2.1 狀況的改變 3
1.2.2 工程上的關(guān)注點 4
1.2.3 可選架構(gòu) 4
1.3 附加說明:何時不使用同構(gòu) 10
1.4 小結(jié) 11
第2章 同構(gòu)JavaScript圖譜 12
2.1 共享視圖 13
2.1.1 共享模板 14
2.1.2 共享視圖邏輯 14
2.2 共享路由 14
2.3 共享模型 15
2.4 小結(jié) 15
第3章 同構(gòu)JavaScript分類 16
3.1 與環(huán)境無關(guān)的代碼 18
3.2 為每個特定環(huán)境提供shim 19
3.3 小結(jié) 20
第4章 超越服務(wù)器端的渲染 21
4.1 實時Web應(yīng)用 22
4.1.1 同構(gòu)API 23
4.1.2 雙向數(shù)據(jù)同步 23
4.1.3 在服務(wù)器端進(jìn)行客戶端仿真 23
4.2 小結(jié) 24
第二部分 構(gòu)建第一個應(yīng)用
第5章 起步 26
5.1 Node的安裝和運行 27
5.1.1 從源碼安裝 27
5.1.2 與Node REPL交互 28
5.1.3 使用npm 管理項目 28
5.2 建立應(yīng)用項目 29
5.2.1 初始化項目 29
5.2.2 安裝應(yīng)用服務(wù)器 31
5.2.3 編寫下一代的JavaScript(ES6) 32
5.2.4 將ES6編譯為ES5 34
5.2.5 建立開發(fā)流程 35
5.3 小結(jié) 39
第6 章 提供第一份HTML文檔 40
6.1 提供HTML模板 40
6.2 使用路徑參數(shù)與查詢參數(shù) 42
6.3 小結(jié) 45
第7章 設(shè)計應(yīng)用架構(gòu) 46
7.1 理解問題 47
7.2 響應(yīng)用戶請求 47
7.2.1 創(chuàng)建Application類 47
7.2.2 創(chuàng)建控制器 49
7.2.3 構(gòu)造控制器實例 50
7.2.4 拓展控制器 52
7.2.5 改進(jìn)響應(yīng)流 53
7.3 小結(jié) 57
第8章 將應(yīng)用傳輸?shù)娇蛻舳?58
8.1 打包應(yīng)用的客戶端版本 58
8.1.1 選擇打包庫 58
8.1.2 創(chuàng)建打包任務(wù) 59
8.1.3 添加客戶端實現(xiàn) 61
8.2 響應(yīng)用戶請求 62
8.2.1 利用History API 63
8.2.2 響應(yīng)并調(diào)用History API 63
8.3 客戶端路由 67
8.4 組織代碼 73
8.5 小結(jié) 75
第9章 創(chuàng)建常用的抽象 76
9.1 何時抽象,為什么需要抽象 76
9.2 獲取和設(shè)置cookie 77
9.3 重定向請求 84
9.4 小結(jié) 88
第10章 序列化、反序列化和添加事件監(jiān)聽 89
10.1 序列化數(shù)據(jù) 90
10.2 創(chuàng)建控制器實例 92
10.3 反序列化數(shù)據(jù) 93
10.4 添加DOM事件處理器 94
10.5 驗證rehydration過程 96
10.6 小結(jié) 98
第11章 結(jié)束感言 99
11.1 生產(chǎn)準(zhǔn)備 99
11.2 衡量架構(gòu) 99
11.3 小結(jié) 102
第三部分 現(xiàn)實世界的解決方案
第12章 沃爾瑪實驗室的同構(gòu)React.js方案 104
12.1 物種起源 104
12.1.1 問題 105
12.1.2 解決方案 106
12.2 React模板與模式 106
12.2.1 在服務(wù)器端渲染 106
12.2.2 在客戶端恢復(fù) 110
12.3 沃爾瑪采用的方法 112
12.4 克服挑戰(zhàn) 112
12.4.1 首字節(jié)時間 112
12.4.2 組件渲染優(yōu)化 113
12.4.3 性能提升 117
12.5 下一步 119
12.6 感謝 120
12.7 補充說明 120
第13章 全棧Angular 121
13.1 同構(gòu)JavaScript:Web應(yīng)用的未來 122
13.2 同構(gòu)Angular 1 122
13.3 Angular 2服務(wù)器端渲染 124
13.3.1 服務(wù)器端渲染的用例 124
13.3.2 Web 應(yīng)用脫節(jié) 126
13.3.3 Angular 2渲染架構(gòu) 127
13.3.4 Preboot 128
13.4 Angular Universal 128
13.5 GetHuman.com 130
13.6 補充說明 131
第14章 Brisket 132
14.1 問題 132
14.2 兩全其美 134
14.3 早期Brisket 135
14.4 成為現(xiàn)實 136
14.5 代碼自由 136
14.6 跨環(huán)境一致的API 139
14.6.1 模型/ 集合 140
14.6.2 視圖生命周期 140
14.6.3 子視圖管理 141
14.6.4 跨環(huán)境使用的工具 141
14.7 前進(jìn)之路 142
14.7.1 ClientApp與ServerApp 142
14.7.2 布局模板 142
14.7.3 其他經(jīng)驗教訓(xùn) 143
14.8 Brisket的下一步? 143
14.9 補充說明 144
第15章 Colony案例研究:脫離Node創(chuàng)建同構(gòu)應(yīng)用 145
15.1 問題 145
15.2 模板 146
15.3 數(shù)據(jù) 147
15.4 轉(zhuǎn)譯視圖模型 148
15.5 布局 150
15.6 頁面生成器 152
15.7 前端SPA 152
15.8 最終架構(gòu) 153
15.9 后續(xù)計劃 154
第16 章 結(jié)語 155
16.1 設(shè)計模式、Flux和同構(gòu)JavaScript家族 155
16.1.1 永遠(yuǎn)相信JavaScrip 156
16.1.2 命名與理解 157
關(guān)于作者 159
關(guān)于封面 159