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