AngularJS是Google公司開發(fā)的一款Web前端框架,功能強(qiáng)大,提供了一些優(yōu)秀的特性,例如雙向數(shù)據(jù)綁定、MVC架構(gòu)模式、指令等,能夠在很大程度上降低Web前端開發(fā)的難度,因此深受廣大Web前端開發(fā)人員的喜愛。
本書分為兩個部分,*部分為入門篇,從第1~14章,主要介紹AngularJS開發(fā)環(huán)境搭建、數(shù)據(jù)綁定、指令及路由等基本知識點(diǎn),每個知識點(diǎn)都會有一個完整的案例與之對應(yīng);第15~19章為本書的第二部分,即進(jìn)階篇,主要介紹一些常用的AngularJS第三方精華擴(kuò)展,以及目前主流的Web前端工具,包括包管理工具Npm和Bower、前端流式自動化工具Gulp及前端單元測試工具Jasmine&Karma。在*后兩章中,我們綜合運(yùn)用前面所學(xué)的知識,實(shí)現(xiàn)了一個AngularJS版本的掃雷游戲和一個客戶管理系統(tǒng)。
本書既適合Web前端開發(fā)初學(xué)者、Web前端開發(fā)工程師閱讀,也適合作為高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)的教材。
作者通過博客和郵件與筆者進(jìn)行技術(shù)交流。博客:http://blog.csdn.net/rongbo_j郵箱:jiangrongbo@gmail.com
AngularJS屬于Web前端開發(fā)技術(shù),本書涉及AngularJS與后端服務(wù)交互相關(guān)的知識點(diǎn)。對于Web前端開發(fā)人員來說,JavaScript語言肯定不陌生,而Node.js使得JavaScript語言能夠在操作系統(tǒng)環(huán)境下運(yùn)行。筆者是一名全棧開發(fā)工程師,本打算使用Java EE技術(shù)發(fā)布Web服務(wù),考慮到本書面向的讀者主要為Web前端開發(fā)人員,為了避免Web服務(wù)部署困難,所以*終選擇使用Node.js開發(fā)服務(wù)端接口。另外,本書也介紹了一些基于Node.js的Web前端開發(fā)工具,希望能夠幫助大家提高日常開發(fā)效率。
江榮波,畢業(yè)于江蘇科技大學(xué),目前就職于北京科藍(lán)軟件系統(tǒng)股份有限公司,擔(dān)任Java高級工程師,參與過網(wǎng)上銀行、直銷銀行、短信平臺、渠道整合平臺開發(fā),對開源前端框架jQuery、AngularJS等有較深入研究,曾作為CSDN特邀編輯參與AngularJS知識庫構(gòu)建。
目 錄
第一部分 入門篇
第1章 走進(jìn)AngularJS世界 3
1.1
AngularJS簡介 3
1.2 搭建AngularJS開發(fā)環(huán)境 3
1.2.1
選擇集成開發(fā)工具 3
1.2.2
下載與安裝AngularJS 6
1.2.3
代碼調(diào)試工具 7
1.3 第一個AngularJS應(yīng)用 8
1.4
AngularJS應(yīng)用剖析 9
1.4.1
第一個AngularJS應(yīng)用解惑 9
1.4.2
AngularJS應(yīng)用構(gòu)成元素 10
1.4.3
AngularJS表達(dá)式 10
1.5 本章小結(jié) 12
第2章 雙向數(shù)據(jù)綁定 13
2.1
AngularJS雙向數(shù)據(jù)綁定 13
2.2
ng-model指令 14
2.3
ng-bind指令 16
2.4 數(shù)據(jù)綁定實(shí)例:價格計算器
17
2.5 本章小結(jié) 18
第3章 AngularJS與MVC 19
3.1
MVC模式簡介 19
3.2
AngularJS中的MVC 20
3.2.1
AngularJS控制器的定義 20
3.2.2
控制器對象的實(shí)例化 21
3.3 使用MVC思想重構(gòu)價格計算器程序
22
3.4 控制器的作用域范圍 23
3.5 控制器中處理DOM事件 25
3.6 本章小結(jié) 27
第4章 應(yīng)用模塊化 28
4.1 應(yīng)用模塊劃分的重要性 28
4.2
AngularJS中的模塊 28
4.2.1
AngularJS模塊的定義 29
4.2.2
使用模塊解決命名沖突問題 29
4.3 模塊化最佳實(shí)踐 32
4.4 本章小結(jié) 33
第5章 作用域與事件 34
5.1
AngularJS作用域詳解 34
5.2
AngularJS作用域繼承 36
5.2.1
JavaScript對象繼承機(jī)制 36
5.2.2
AngularJS作用域?qū)ο笤屠^承 39
5.3 作用域高級特性 42
5.3.1
$watch方法監(jiān)視作用域 42
5.3.2
作用域監(jiān)視解除 45
5.3.3
$apply方法與$digest循環(huán) 46
5.3.4
$apply與$digest應(yīng)用實(shí)戰(zhàn) 47
5.3.5
$timeout與$interval服務(wù)介紹 49
5.4 作用域事件路由與廣播 50
5.4.1
$emit方法實(shí)現(xiàn)事件路由 50
5.4.2
$broadcast方法實(shí)現(xiàn)事件廣播 52
5.4.3
作用域?qū)ο?on方法詳解 55
5.5 本章小結(jié) 55
第6章 路由與多視圖 56
6.1 創(chuàng)建多視圖應(yīng)用 56
6.1.1
使用$routeProvider創(chuàng)建映射 56
6.1.2
創(chuàng)建多視圖 58
6.1.3
通過路由切換視圖 58
6.2 通過URL向控制器傳遞參數(shù) 60
6.3
ng-template指令的使用 62
6.4
$location服務(wù) 64
6.5
$location實(shí)現(xiàn)多視圖切換 66
6.6 路由事件 67
6.7
ng-include指令 68
6.8
UI Router框架使用 69
6.8.1
UI Router下載與安裝 69
6.8.2
UI Router使用案例 70
6.9 本章小結(jié) 73
第7章 AngularJS表單校驗(yàn) 74
7.1
Web前端表單校驗(yàn)的必要性 74
7.2
AngularJS表單校驗(yàn)?zāi)J?74
7.3
ngMessages模塊 79
7.4 本章小結(jié) 82
第8章 AngularJS指令 83
8.1 內(nèi)置指令詳解 83
8.2
AngularJS自定義指令 86
8.3 指令定義對象詳解 88
8.3.1
link方法 88
8.3.2
compile方法 92
8.3.3
scope屬性與指令作用域 94
8.3.4
孤立作用域與父作用域模型數(shù)據(jù)綁定 95
8.3.5
Transclusion 100
8.3.6
controller方法與require屬性 104
8.4 自定義表單驗(yàn)證模式 107
8.5 本章小結(jié) 109
第9章 Service、Factory與Provider 110
9.1
Service 110
9.2
Factory 112
9.3
Provider 113
9.4
Value&Constant 114
9.5 本章小結(jié) 115
第10章 AngularJS過濾器 116
10.1
過濾器使用方法 116
10.2
AngularJS內(nèi)置過濾器 118
10.3
自定義過濾器 126
10.3.1
案例一:自定義金額轉(zhuǎn)換人民幣大寫過濾器 127
10.3.2
案例二:自定義帶參數(shù)的過濾器 129
10.4
第三方過濾器庫的使用 131
10.4.1
angular-filter 131
10.4.2
angular-emoji-filter 133
10.5
本章小結(jié) 134
第11章 AngularJS中的依賴注入 135
11.1
JavaScript依賴注入實(shí)現(xiàn) 138
11.2
AngularJS中的依賴注入 142
11.3
$provide服務(wù)介紹 143
11.4
$injector服務(wù)介紹 145
11.5
本章小結(jié) 146
第12章 AngularJS與動畫 147
12.1
Web動畫實(shí)現(xiàn)原理 147
12.2
使用CSS3實(shí)現(xiàn)動畫 150
12.2.1
CSS3中的Transform屬性 150
12.2.2
CSS3中的Transition屬性 153
12.2.3
CSS3中的Animation屬性 157
12.2.4
常用的CSS3動畫庫 160
12.3
AngularJS動畫 162
12.3.1
基于事件驅(qū)動的CSS3動畫 162
12.3.2
AngularJS中的JavaScript動畫 166
12.3.3
ngView視圖切換動畫案例 168
12.3.4
ngAnimate與CSS3動畫庫整合 172
12.3.5
ngFx動畫擴(kuò)展庫 175
12.4
本章小結(jié) 177
第13章 Cookie讀寫 178
13.1
Cookie簡介 178
13.2
在JavaScript中操作Cookie 179
13.3
在AngularJS中操作Cookie 183
13.4
本章小結(jié) 186
第14章 Promise 187
14.1
AngularJS中的Promise機(jī)制 188
14.2
AngularJS請求Web服務(wù) 190
14.2.1
$http服務(wù) 191
14.2.2
使用Express構(gòu)建RESTful服務(wù) 194
14.2.3
$resource服務(wù) 197
14.3
AngularJS文件上傳 200
14.4
Angular File Upload模塊介紹 204
14.5
本章小結(jié) 207
第二部分 進(jìn)階篇
第15章 AngularUI 211
15.1
UI Bootstrap 211
15.1.1
警告框案例 212
15.1.2
復(fù)選框案例 213
15.1.3
日歷控件案例 215
15.1.4
模態(tài)對話框案例 216
15.1.5
下拉菜單案例 220
15.2
UI Ace 222
15.3
UI Grid 227
15.4
UI Date 229
15.5
UI Select 232
15.6
本章小結(jié) 234
第16章 AngularJS精華擴(kuò)展 235
16.1
利用Angular Chart生成圖表 235
16.1.1
柱狀圖案例 236
16.1.2
曲線圖案例 237
16.1.3
餅狀圖案例 239
16.2
利用Videogular實(shí)現(xiàn)播放器 241
16.3
利用Angular Masonry實(shí)現(xiàn)照片墻 246
16.4
利用ngDialog實(shí)現(xiàn)對話框 250
16.5
本章小結(jié) 253
第17章 常用Web前端工具集 254
17.1
Node.js安裝與使用 254
17.2
Npm包管理工具 257
17.2.1
Npm安裝 257
17.2.2
初始化項(xiàng)目 258
17.2.3
安裝Node模塊 259
17.2.4
卸載Node模塊 260
17.3
Bower管理工具 260
17.3.1
安裝Bower 261
17.3.2
初始化Bower 261
17.3.3
使用Bower安裝包 263
17.3.4
查看包的信息 263
17.3.5
更新包的版本 264
17.3.6
查找包 264
17.3.7
卸載包 264
17.4
Gulp項(xiàng)目管理工具 265
17.4.1
Gulp的安裝與使用 265
17.4.2
利用JSHint驗(yàn)證JavaScript代碼 266
17.4.3
壓縮JavaScript代碼 268
17.4.4
使用Gulp Changed插件更新文件 270
17.4.5
使用Gulp Plumber插件處理異常 271
17.4.6
使用Gulp壓縮圖片 271
17.4.7
使用Gulp編譯Less 272
17.4.8
使用Gulp Browsersync插件進(jìn)行調(diào)試 275
17.5
Jasmine&Karma單元測試工具 277
17.5.1
安裝Jasmine 278
17.5.2
使用Jasmine進(jìn)行單元測試 278
17.5.3
在瀏覽器環(huán)境下使用Jasmine 282
17.5.4
安裝并使用karma 284
17.5.5
整合Jasmine&Karma 286
17.5.6
AngularJS單元測試 288
17.6
本章小結(jié) 294
第18章 綜合案例:掃雷游戲 295
18.1
搭建開發(fā)環(huán)境 295
18.2
游戲元素介紹 296
18.3
實(shí)現(xiàn)布雷區(qū) 297
18.4
隨機(jī)生成地雷 300
18.5
生成方格中的數(shù)字 303
18.6
響應(yīng)右擊事件 308
18.7 游戲勝利與失敗條件檢測 311
18.8
實(shí)現(xiàn)重新開始游戲功能 313
18.9
自動翻開相鄰方格 314
18.10
本章小結(jié) 317
第19章 綜合案例:客戶管理系統(tǒng)
318
19.1
項(xiàng)目整體介紹 318
19.2
實(shí)現(xiàn)用戶模塊 321
19.3
實(shí)現(xiàn)主面板模塊 326
19.4
實(shí)現(xiàn)報表模塊 328
19.5
實(shí)現(xiàn)客戶信息管理模塊 331
19.6
本章小結(jié) 335