JavaScript 框架設計, 2/e
內容描述
內 容 提 要
本書全面講解了JavaScript框架設計及相關的知識,主要內容包括種子模塊、語言模塊、瀏覽器嗅探與特徵偵測、類工廠、選擇器引擎、節點模塊、數據緩存模塊、樣式模塊、屬性模塊、PC端和移動端的事件系統、jQuery的事件系統、異步模型、數據交互模塊、動畫引擎、MVVM、前端模板(靜態模板)、MVVM的動態模板、性能牆與復雜牆、組件、jQuery時代的組件方案、avalon2的組件方案、react的組件方案等。
本書適合前端設計人員、JavaScript開發者、移動UI設計者、程序員和項目經理閱讀,也可作為相關專業學慣用書和培訓學校教材。
目錄大綱
第1章種子模塊1
1.1模塊化1
1.2功能介紹2
1.3對象擴展3
1.4數組化5
1.5類型的判定8
1.5.1 type12
1.5.2 isPlainObject13
1.5.3 isWindow14
1.5.4 isNumeric15
1.5.5 isArrayLike16
1.6 domReady17
1.7無衝突處理20
1.8總結20
第2章語言模塊21
2.1字符串的擴展與修復22
2.1.1 repeat24
2.1.2 byteLen26
2.1.3 pad30
2.1.4 quote32
2.1.5 trim與空白33
2.2數組的擴展與修復37
2.3數值的擴展與修復45
2.4函數的擴展與修復48
2.5日期的擴展與修復53
第3章瀏覽器嗅探與特徵偵測57
3.1瀏覽器判定58
3.2 document.all趣聞61
3.3事件的支持偵測62
3.4樣式的支持偵測65
3.5 jQuery一些常用特徵的含義65
第4章類工廠68
4.1 JavaScript對類的支撐68
4.2各種類工廠的實現73
4.2.1相當精巧的庫—P.js74
4.2.2 JS.Class76
4.2.3 simple—inheritance78
4.2.4體現JavaScript靈活性的庫—def.js81
4.3進擊的屬性描述符85
4.4真類降臨93
第5章選擇器引擎102
5.1瀏覽器內置的尋找元素的方法103
5.2 getElementsBySelector105
5.3選擇器引擎涉及的知識點108
5.3.1關係選擇器109
5.3.2偽類111
5.3.3其他概念113
5.4選擇器引擎涉及的通用函數114
5.4.1 isXML114
5.4.2 contains115
5.4.3節點排序與去重117
5.4.4切割器121
5.4. 5屬性選擇器對於空白字符的匹配策略123
5.4.6子元素過濾偽類的分解與匹配125
5.5 Sizzle引擎127
5.6總結135
第6章節點模塊136
6.1節點的創建136
6.2節點的插入142
6.3節點的複製144
6.4節點的移除148
6.5節點的移除回調實現151
6.5.1 MutationObserver152
6.5.2更多候選方案153
6.6 innerHTML、innerText、outerHTML、outerText的兼容處理157
6.7模板容器元素161
6.8 iframe元素162
6.9總結165
第7章數據緩存模塊166
7.1 jQuery的第1代緩存系統166
7.2 jQuery的第2代緩存系統172
7.3 jQuery的第3代緩存系統175
7.4有容量限制的緩存系統176
7.5本地存儲系統178
7.6總結184
第8章樣式模塊185
8.1主體架構186
8.2樣式名的修正189
8.3個別樣式的特殊處理190
8.3.1 opacity190
8.3.2 user—select192
8.3.3 background—position192
8.3.4 z—index193
8.3.5盒子模型194
8.3.6元素的尺寸195
8.3.7元素的顯隱201
8.3.8元素的坐標203
8.4元素的滾動條的坐標209
8.5總結210
第9章屬性模塊211
9.1元素節點的屬性212
9.2如何區分固有屬性與自定義屬性214
9.3如何判定瀏覽器是否區分固有屬性與自定義屬性216
9.4 IE的屬性系統的3次演變217
9.5 className的操作218
9.6 Prototype.js的屬性系統221
9.7 jQuery的屬性系統226
9.8 avalon的屬性系統229
9.9 value的操作232
9.10總結235
第10章PC端的事件系統236
10.1原生API簡介238
10.2 on×××綁定方式的缺陷239
10.3 attachEvent的缺陷239
10.4 addEventListener的缺陷241
10.5 handleEvent與EventListenerOptions242
10.6 DeanEdward大神的addEvent.js源碼分析243
10.7 jQuery的事件系統246
10.8 avalon2的事件系統248
10.9總結254
第11章移動端的事件系統255
11.1 touch系事件256
11.2 gesture系事件258
11.3 tap系事件259
11.4 press系事件268
11.5 swipe系事件271
11.6 pinch系事件273
11.7拖放系事件276
11.8 rotate系事件279
11.9總結282
第12章異步模型283
12.1 setTimeout與setInterval284
12.2 Promise誕生前的世界287
12.2.1回調函數callbacks287
12.2.2觀察者模式observers287
12.2.3事件機制listeners289
12.3 JSDeferred里程碑289
12.4 jQueryDeferred宣教者299
12.5 es6Promise第一個標準模型303
12.5.1構造函數:Promise(executor)308
12.5.2Promise.resolve/reject309
12.5.3Promise.all /race309
12.5.4Promise#then/catch310
12.5.5Promise#resolve/reject310
12.5.6Promsie#notify311
12.5.7nextTick312
12.6 es6生成器過渡者314
12.6.1關鍵字yield315
12.6.2yield*和yield的區別316
12.6.3異常處理317
12.7 es7async/await終極方案319
12.8總結321
第13章數據交互模塊323
13.1 Ajax概覽323
13.2優雅地取得XMLHttpRequest對象324
13.3 XMLHttpRequest對象的事件綁定與狀態維護326
13.4發送請求與數據328
13.5接收數據330
13.6上傳文件333
13.7 jQuery.ajax335
13.8 fetch,下一代Ajax340
第14章動畫引擎344
14.1動畫的原理344
14.2緩動公式347
14.3 jQuery.animate349
14.4 massFramework基於JavaScript的動畫引擎350
14.5 requestAnimationFrame358
14.6 CSS3transition364
14.7 CSS3animation368
14.8 massFramework基於CSS的動畫引擎370
第15章MVVM378
15.1前端模板(靜態模板)378
15.2 MVVM的動態模板388
15.2.1求值函數390
15.2.2刷新函數395
15.3 ViewModel399
15.3.1 Proxy400
15.3.2 Reflect401
15.3.3 avalon的ViewModel設計403
15.3.4 angular的ViewModel設計407
15.4 React與虛擬DOM412
15.4.1 React的diff算法415
15.4.2 React的多端渲染417
15.5性能牆與復雜牆417
第16章組件422
16.1 jQuery時代的組件方案422
16.2 avalon2的組件方案427
16.2.1組件容器429
16.2.2配置對象430
16.2.3 slot機制430
16.2.4 soleSlot機制431
16.2.5生命週期432
16.3 React的組件方案433
16.3.1 React組件的各種定義方式433
16.3.2 React組件的生命週期439
16.3.3 React組件間通信441
16.3.4 React組件的分類445
16.4前端路由446
16.4.1 storage447
16.4.2 mmHistory448
16.4.3 mmRouter454彩蛋458
作者介紹
鐘欽成網名司徒正美,JavaScript專家,立志做考古學家的日語系工程師,穿梭於二次元與二進制間的“魔法師”,做過陶藝,寫過小說,涉獵Java、Ruby、 JavaScript,3年成此書!