第1章 麵嚮對象的JavaScript 1
1.1 JavaScript中的對象 1
1.1.1 定製對象 1
1.1.2 類 2
1.2 代碼規範和命名 22
1.2.1 規則1:使用描述性的名字 22
1.2.2 規則2:以小寫字母開頭 23
1.2.3 規則3:使用駱駝命名法來分割單詞 23
1.2.4 規則4:全局常量使用全大寫的名字 23
1.2.5 規則5:集中在一個語句中聲明函數體的所有變量並將其置於函數體頂部 24
1.3 ECMAScript 5 26
1.3.1 JSON數據格式解析 27
1.3.2 嚴格模式 27
1.3.3 函數綁定 28
1.3.4 數組方法 29
1.3.5 對象方法 31
1.4 小結 34
第2章 JavaScript文檔 35
2.1 行內和塊級注釋 35
2.2 結構化的JavaScript文檔 36
2.3 YUIDoc文檔格式 36
2.3.1 為“類”、構造器、屬性和方法添加文檔 37
2.3.2 為事件添加文檔 45
2.3.3 為代碼示例添加文檔 45
2.3.4 其他YUIDoc文檔標簽 46
2.4 更具錶達性的文檔格式——Markdown 46
2.4.1 用標題來組織內容 46
2.4.2 換行以及創建段落 47
2.4.3 創建列錶 48
2.4.4 強調文本 50
2.4.5 顯示代碼 51
2.4.6 添加引用 51
2.4.7 添加URL 鏈接 52
2.4.8 插入圖片 53
2.4.9 生成水平分割綫 53
2.4.10 用反斜杠來插入保留字符 53
2.4.11 對於其他內容,可以使用HTML 54
2.5 使用YUIDoc創建一個文檔網站 54
2.6 小結 59
第3章 編寫高質量的JavaScript 60
3.1 進行靜態代碼分析 60
3.1.1 JSLint 60
3.1.2 JSHint 64
3.1.3 Google Closure Compiler和Closure Linter 65
3.1.4 選擇一個靜態代碼分析工具 66
3.2 JavaScript中的單元測試 67
3.2.1 JavaScript的單元測試框架 67
3.2.2 使用Jasmine來進行JavaScript單元測試 68
3.3 處理運行時錯誤 74
3.3.1 JavaScript的原生錯誤類型 75
3.3.2 將可能齣錯的代碼放入try-catch語句中 75
3.3.3 檢測錯誤類型 77
3.3.4 自定義錯誤類型 77
3.4 度量代碼質量 79
3.4.1 單元測試的代碼覆蓋度 79
3.4.2 度量代碼復雜度 81
3.5 小結 84
第4章 增強JavaScript性能 85
4.1 優化頁麵加載時間 85
4.1.1 HTML 標簽順序 85
4.1.2 JavaScript文件的GZip編碼傳輸 85
4.1.3 縮編、混淆和編譯 86
4.1.4 請求時纔延遲加載JavaScript文件 90
4.2 優化文檔對象的操作 91
4.2.1 實現對頁麵元素的最小化訪問 92
4.2.2 盡量利用已有元素 92
4.2.3 離綫DOM的利用 93
4.2.4 使用CSS而非JavaScript來操控頁麵樣式 94
4.3 提升DOM 事件性能 95
4.3.1 委托事件至父元素 95
4.3.2 使用框架化處理頻密發齣的事件 96
4.4 提升函數性能 97
4.5 使用正則錶達式實現更快速的字符串操作 100
4.6 更快速地使用數組 102
4.6.1 快速創建數組 103
4.6.2 快速進行數組循環 103
4.7 轉移密集型任務至Web Worker 106
4.8 簡單的性能測量 110
4.9 小結 111
第5章 設計模式:創建型 112
5.1 什麼是設計模式 112
5.2 創建型設計模式 113
5.2.1 工廠模式 113
5.2.2 抽象工廠模式 116
5.2.3 生成器模式 120
5.2.4 原型模式 122
5.2.5 單例模式 124
5.3 小結 128
第6章 設計模式:結構型 129
6.1 適配器模式 129
6.2 組閤模式 132
6.3 裝飾模式 133
6.4 外觀模式 135
6.5 享元模式 137
6.6 摻閤模式 143
6.7 模塊模式 147
6.8 代理模式 150
6.9 小結 153
第7章 設計模式:行為型 154
7.1 職責鏈模式 154
7.2 命令模式 157
7.3 迭代器模式 160
7.4 觀察者模式 163
7.5 中介者模式 167
7.6 備忘錄模式 171
7.7 承諾模式 173
7.8 策略模式 184
7.9 小結 188
第8章 設計模式:架構型 189
8.1 MVC模式 189
8.2 MVP模式 197
8.3 MVVM模式 203
8.4 架構型模式框架 208
8.5 小結 209
第9章 代碼文件依賴管理 210
9.1 使用RequireJS進行代碼文件依賴管理 210
9.2 加載、初始化RequireJS 215
9.3 模塊名稱的彆名 217
9.4 內容分發網絡和後備 217
9.5 建立模塊 218
9.6 於請求時纔加載額外的腳本 220
9.7 RequireJS代碼優化工具 221
9.8 RequireJS的附加插件 221
9.9 RequireJS的代替品 222
9.10 小結 223
第10章 移動設備JavaScript開發 224
10.1 移動Web開發的局限性 224
10.1.1 電池續航能力 224
10.1.2 網絡帶寬速度與延時 225
10.1.3 闆載內存容量 225
10.1.4 操作係統響應能力 226
10.2 通過JavaScript訪問移動設備上的傳感器 227
10.2.1 訪問地理位置定位傳感器 228
10.2.2 訪問觸摸傳感器 230
10.2.3 訪問姿態傳感器和方嚮傳感器 232
10.2.4 訪問運動傳感器 235
10.2.5 未能訪問的傳感器 237
10.2.6 事件框架化與傳感器數據 237
10.2.7 利用傳感器數據進一步發揮 238
10.3 網絡連接故障與離綫狀態 238
10.3.1 在綫與離綫狀態的檢測 239
10.3.2 利用Web Storage API長期保存數據 241
10.3.3 HTML5 Application Cache 244
10.4 響應式(自適應)網頁設計的JavaScript 246
10.5 小結 247
第11章 使用CanvasAPI創建遊戲 248
11.1 在Canvas中的基本繪圖操作 248
11.2 高清Canvas元素 251
11.3 使用Canvas製作遊戲 251
11.3.1 在Canvas上繪製圖像 252
11.3.2 Canvas中的動畫 253
11.3.3 遊戲的控製 254
11.3.4 碰撞檢測 256
11.3.5 遊戲主循環 257
11.3.6 分層Canvas以提高性能 258
11.4 在Canvas中製作Frogger遊戲 258
11.5 小結 299
第12章 使用WebRTC實現視頻聊天 300
12.1 WebRTC規範 300
12.2 訪問網絡攝像頭和麥剋風 300
12.3 建立一個簡單的視頻聊天網頁應用程序 303
12.4 創建視頻聊天客戶端 307
12.5 小結 317
第13章 客戶端模闆引擎的使用 318
13.1 動態更新頁麵內容 318
13.2 通過Ajax動態加載HTML 319
13.3 在客戶端應用模闆 320
13.3.1 不依賴庫實現客戶端模闆 321
13.3.2 使用Mustache.js模闆引擎實現客戶端模闆 323
13.3.3 使用Handlebars.js引擎實現客戶端模闆 330
13.3.4 作為替換的其他客戶端模闆引擎庫 341
13.4 考慮漸進增強 344
13.5 小結 345
第14章 Node.js應用平颱 346
14.1 Node.js 安裝 346
14.2 編寫Node.js應用程序 347
14.2.1 console對象 348
14.2.2 加載模塊 349
14.3 Node.js軟件包 351
14.4 劃分Node.js應用程序分布至多個文件 356
14.5 用於網頁應用程序的Node.js框架 357
14.5.1 Express框架 357
14.5.2 Socket.IO 360
14.6 Node.js應用程序的托管 365
14.7 小結 365
第15章 構建工具及自動化 366
15.1 構建工具 366
15.1.1 Grunt——JavaScript任務運行器 367
15.1.2 Gulp.js——“流式”構建係統 374
15.1.3 使用構建工具來使常規任務實現自動化 377
15.2 第三方庫和框架的管理 392
15.3 項目的建立以及基本框架搭建 393
15.4 小結 395
第16章 瀏覽器開發者工具 396
16.1 找齣隱藏的瀏覽器開發者工具 396
16.2 JavaScript 控製颱 398
16.2.1 輸齣信息到控製颱窗口 398
16.2.2 使用控製颱進行性能測量 400
16.2.3 移除引用console對象的代碼以進行發布 401
16.3 對運行中的JavaScript Code進行調試 401
16.3.1 已縮編代碼的處理 401
16.3.2 暫停並觀察正在運行的JavaScript代碼 403
16.4 分析JavaScript代碼 405
16.4.1 查找內存泄漏 405
16.4.2 識彆性能瓶頸 408
16.5 小結 410
· · · · · · (
收起)