編輯推薦
本書可以助你學習如何使用瀏覽器API、語言特性和工具,來構建大型、結構良好、高質量、移動優化的網站和應用程序。通過本書易於上手的示例,開發人員能夠:
掌握JavaScript的性能、可靠性、穩定性和代碼可管理性;
理解並編寫高效的麵嚮對象和原型代碼,包括充分理解this關鍵字;
提升JavaScript代碼性能;
使用常見設計模式構建大型Web應用;
編寫高質量JavaScript代碼,避開容易引發錯誤的陷阱;
運用AMD和RequireJS管理代碼依賴性;
為移動設備進行開發,創建遊戲,使用現代API(如Geolocation、Canvas和WebRTC)實現實時視頻聊天;
通過Node.js用JavaScript編寫命令行和Web服務器應用;
使用構建工具(如Grunt和Gulp)使常規任務自動化,改進開發工作流。
內容簡介
本書是JavaScript實戰指南,主要內容包括:JavaScript性能、可靠性、穩定性和代碼管理分析,麵嚮對象代碼的使用,測試和錯誤處理機製的構建,用AMD和RequireJS管理代碼依賴,移動端、遊戲和實時通信的JavaScript開發,等等。
作者簡介
Den Odell 前端開發工程師,具有豐富的HTML、CSS和JavaScript編程經驗,Web標準和可用性的積極推動者。作為數字服務機構AKQA的Web開發主管和前端技術架構師,他曾為法拉利、耐剋和諾基亞等公司開發網站和富Internet應用。
目錄
第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 第三方庫和框
前言/序言
精通JavaScript開發 下載 mobi epub pdf txt 電子書