編寫可維護的JavaScript

內容介紹

《編寫可維護的JavaScript》向開發人員闡述了如何在團隊開發中編寫具備高可維護性的JavaScript代碼,書中詳細說明了作為團隊一分子,應該怎么寫JavaScript。《編寫可維護的JavaScript》內容涵蓋了編碼風格、編程技巧、自動化、測試等幾方面,既包括具體風格和原則的介紹,也包括示例和技巧說明,最後還介紹了如何通過自動化的工具和方法來實現一致的編程風格。
《編寫可維護的JavaScript》適合前端開發工程師、JavaScript程式設計師和學習JavaScript編程的讀者閱讀,也適合開發團隊負責人、項目負責人閱讀。

作者介紹

Nicholas C. Zakas是一名前端開發顧問、作者和演講家。在Yahoo!供職超過5年時間,在這期間他曾是Yahoo!首頁首席前端工程師和YUI庫代碼貢獻者。他著有《JavaScript高級程式設計》、《Ajax高級程式設計》和《高性能JavaScript》等書籍。Zakas倡導了很多最佳實踐,包括漸進增強、可訪問性、性能、擴展性和可維護性等。他的部落格地址是:http://www.nczonline.net/。他的Twitter是:@slicknet。
李晶,花名拔赤,淘寶前端工程師,具有多年前端開發經驗,在團隊協作、組件開發、移動Web App等方面有深入研究,曾經參與淘寶首頁、KISSY等項目開發。他翻譯過《JavaScript Web富套用開發》、《JavaScript權威指南(第六版)》、《What is Node?》等書籍,熱愛分享,喜歡折騰。微博http://weibo.com/jayli。
郭凱,花名流火,淘寶前端工程師,喜歡登山,也喜歡夜深人靜時一人靜靜地寫代碼,折騰過許多小站均未能持久,有In、Juicer等開源項目。鍾愛JavaScript,也喜歡Python,自嘲所學雜而不精。部落格http://benben.cc。
張散集,花名一舟,淘寶前端工程師。他主要從事技術管理,負責淘寶網(北京)的新業務技術和前端團隊,熱愛前端新技術的推廣與套用。翻譯作品有《JavaScript Web富套用開發》和《JavaScript權威指南(第六版)》。

作品目錄

目錄
第一部分 編程風格 1
第1章 基本的格式化 4
1.1 縮進層級 4
1.2 語句結尾 7
1.3 行的長度 8
1.4 換行 9
1.5 空行 10
1.6 命名 11
1.6.1 變數和函式 12
1.6.2 常量 13
1.6.3 構造函式 14
1.7 直接量 15
1.7.1 字元串 15
1.7.2 數字 16
1.7.3 null 17
1.7.4 undefined 18
1.7.5 對象直接量 19
1.7.6 數組直接量 20
第2章 注釋 21
2.1 單行注釋 21
2.2 多行注釋 23
2.3 使用注釋 24
2.3.1 難於理解的代碼 25
2.3.2 可能被誤認為錯誤的代碼 26
2.3.3 瀏覽器特性hack 26
2.4 文檔注釋 27
第3章 語句和表達式 30
3.1 花括弧的對齊方式 31
3.2 塊語句間隔 32
3.3 switch語句 33
3.3.1 縮進 33
3.3.2 case語句的“連續執行” 35
3.3.3 default 36
3.4 with語句 37
3.5 for循環 37
3.6 for-in循環 39
第4章 變數、函式和運算符 41
4.1 變數聲明 41
4.2 函式聲明 44
4.3 函式調用間隔 45
4.4 立即調用的函式 46
4.5 嚴格模式 47
4.6 相等 49
4.6.1 eval() 51
4.6.2 原始包裝類型 52
第二部分 編程實踐 54
第5章 UI層的松耦合 55
5.1 什麼是松耦合 56
5.2 將JavaScript從CSS中抽離 57
5.3 將CSS從JavaScript中抽離 58
5.4 將JavaScript從HTML中抽離 60
5.5 將HTML從JavaScript中抽離 62
5.5.1 方法1:從伺服器載入 63
5.5.2 方法2:簡單客戶端模板 64
5.5.3 方法3:複雜客戶端模板 67
第6章 避免使用全局變數 70
6.1 全局變數帶來的問題 70
6.1.1 命名衝突 71
6.1.2 代碼的脆弱性 71
6.1.3 難以測試 72
6.2 意外的全局變數 72
避免意外的全局變數 73
6.3 單全局變數方式 74
6.3.1 命名空間 76
6.3.2 模組 78
6.4 零全局變數 81
第7章 事件處理 83
7.1 典型用法 83
7.2 規則1:隔離套用邏輯 84
7.3 規則2:不要分發事件對象 85
第8章 避免“空比較” 88
8.1 檢測原始值 88
8.2 檢測引用值 90
8.2.1 檢測函式 92
8.2.2 檢測數組 94
8.3 檢測屬性 95
第9章 將配置數據從代碼中分離出來 98
9.1 什麼是配置數據 98
9.2 抽離配置數據 99
9.3 保存配置數據 100
第10章 拋出自定義錯誤 103
10.1 錯誤的本質 103
10.2 在JavaScript中拋出錯誤 104
10.3 拋出錯誤的好處 105
10.4 何時拋出錯誤 106
10.5 try-catch語句 107
10.6 錯誤類型 109
第11章 不是你的對象不要動 112
11.1 什麼是你的 112
11.2 原則 113
11.2.1 不覆蓋方法 113
11.2.2 不新增方法 114
11.2.3 不刪除方法 116
11.3 更好的途徑 117
11.3.1 基於對象的繼承 118
11.3.2 基於類型的繼承 119
11.3.3 門面模式 120
11.4 關於Polyfill的註解 121
11.5 阻止修改 122
第12章 瀏覽器嗅探 125
12.1 User-Agent檢測 125
12.2 特性檢測 127
12.3 避免特性推斷 129
12.4 避免瀏覽器推斷 130
12.5 應當如何取捨 134
第三部分 自動化 135
第13章 檔案和目錄結構 137
13.1 最佳實踐 137
13.2 基本結構 138
第14章 Ant 143
14.1 安裝 143
14.2 配置檔案 143
14.3 執行構建 145
14.4 目標操作的依賴 145
14.5 屬性 146
14.6 Buildr項目 148
第15章 校驗 149
15.1 查找檔案 149
15.2 任務 150
15.3 增強的目標操作 152
15.4 其他方面的改進 153
15.5 Buildr任務 154
第16章 檔案合併和加工 156
16.1 任務 156
16.2 行尾結束符 157
16.3 檔案頭和檔案尾 158
16.4 加工檔案 159
第17章 檔案精簡和壓縮 163
17.1 檔案精簡 163
17.1.1 使用YUI Compressor精簡代碼 165
17.1.2 用Closure Compiler精簡 167
17.1.3 使用UglifyJS精簡 169
17.2 壓縮 170
17.2.1 運行時壓縮 171
17.2.2 構建時壓縮 171
第18章 文檔化 175
18.1 JSDoc Toolkit 175
18.2 YUI Doc 177
第19章 自動化測試 180
19.1 YUI Test Selenium引擎 180
19.1.1 配置一台Selenium伺服器 181
19.1.2 配置YUI Test Selenium引擎 181
19.1.3 使用YUI Test Selenium引擎 181
19.1.4 Ant的配置寫法 183
19.2 Yeti 184
19.3 PhantomJS 186
19.3.1 安裝及使用 186
19.3.2 Ant的配置寫法 187
19.4 JsTestDriver 188
19.4.1 安裝及使用 188
19.4.2 Ant的配置寫法 189
第20章 組裝到一起 191
20.1 被忽略的細節 191
20.2 編制打包計畫 192
20.2.1 開發版本的構建 193
20.2.2 集成版本的構建 194
20.2.3 發布版本的構建 195
20.3 使用CI系統 196
20.3.1 Jenkins 196
20.3.2 其他CI系統 199
附錄A JavaScript編碼風格指南 200
附錄B JavaScript工具集 223

相關詞條

熱門詞條

聯絡我們