Node.js 是一種領先的伺服器端編程環境,MongoDB是最流行的NoSQL資料庫,而AngularJS 正迅速成為基於MVC的前端開發的領先框架。它們結合在一起使得能夠完全用JavaScript 創建從伺服器到客戶端瀏覽器的高性能站點和應用程式。
基本介紹
- 書名:Node.js+MongoDB+AngularJS Web開發
- 作者:【美】Brad Dayley(布拉德.德雷)
- 譯者:盧濤 李穎
- ISBN:978-7-121-26117-6
- 頁數:592
- 定價:108.00元
- 出版社:電子工業出版社
- 出版時間:2015年6月
- 裝幀:平裝
- 開本:16
內容提要,目錄,
內容提要
Node.js 是一種領先的伺服器端編程環境,MongoDB是最流行的NoSQL資料庫,而AngularJS 正迅速成為基於MVC的前端開發的領先框架。它們結合在一起使得能夠完全用JavaScript 創建從伺服器到客戶端瀏覽器的高性能站點和應用程式。
《Node.js+MongoDB+AngularJS Web開發》為想要將這3 種技術整合到全面的有效解決方案的Web 程式設計師提供了完整指南。它簡潔而清晰地介紹了這3 種技術,然後迅速轉到構建幾種常見的Web 應用程式上面。
讀者將學會使用Node.js 和MongoDB來建立更具可擴展性的高性能網站,並利用AngularJS 創新的MVC 方法構建更有效的網頁和應用程式,以及把這三者結合在一起使用,從而提供卓越的下一代Web解決方案。
《Node.js+MongoDB+AngularJS Web開發》適合對HTML 的基礎知識已經有所了解,並可以用現代程式語言完成一些編程的讀者。讀者如果對JavaScript 有一定了解,則將更易於理解本書的內容。
目錄
第1部分 引 言
第1章 介紹Node.js-to-AngularJS套件 3
1.1 了解基本的Web開發框架 3
1.1.1 用戶 4
1.1.2 瀏覽器 4
1.1.3 Web伺服器 6
1.1.4 後端服務 6
1.2 了解Node.js-to-AngularJS套件組件 7
1.2.1 Node.js 7
1.2.2 MongoDB 8
1.2.3 Express 9
1.2.4 AngularJS 9
1.3 小結 10
1.4 下一章 10
第2章 JavaScript基礎 11
2.1 定義變數 11
2.2 了解JavaScript數據類型 12
2.3 使用運算符 13
2.3.1 算術運算符 13
2.3.2 賦值運算符 14
2.3.3 運用比較和條件運算符 14
2.4 實現循環 16
2.4.1 while循環 17
2.4.2 do/while循環 17
2.4.3 for循環 17
2.4.4 for/in循環 18
2.4.5 中斷循環 19
2.5 創建函式 19
2.5.1 定義函式 20
2.5.2 傳遞變數給函式 20
2.5.3 從函式返回值 20
2.5.4 使用匿名函式 21
2.6 理解變數作用域 22
2.7 使用JavaScript對象 22
2.7.1 使用對象語法 23
2.7.2 創建自定義對象 23
2.7.3 使用原型對象模式 24
2.8 處理字元串 25
2.8.1 合併字元串 26
2.8.2 在字元串中搜尋子串 26
2.8.3 在一個字元串中替換單詞 27
2.8.4 將字元串分割成數組 27
2.9 使用數組 27
2.9.1 合併數組 28
2.9.2 遍歷數組 29
2.9.3 將數組轉換為字元串 29
2.9.4 檢查數組是否包含某個條目 29
2.9.5 在數組中添加條目和刪除條目 30
2.10 添加錯誤處理 30
2.10.1 try/catch塊 30
2.10.2 拋出你自己的錯誤 31
2.10.3 使用finally 31
2.11 小結 32
2.12 下一章 32
第2部分 學習Node.js
第3章 開始使用Node.js 35
3.1 了解Node.js 35
3.1.1 誰在使用Node.js 35
3.1.2 Node.js的用途 36
3.2 Node.js安裝 36
3.2.1 縱觀Node.js安裝位置 36
3.2.2 驗證Node.js執行檔 37
3.2.3 選擇Node.js IDE 37
3.3 使用Node.js包 38
3.3.1 什麼是Node封裝模組 38
3.3.2 了解Node包註冊表 38
3.3.3 使用Node包管理器 38
3.3.4 搜尋Node封裝模組 39
3.3.5 安裝Node封裝模組 40
3.3.6 使用package.json 41
3.4 創建Node.js應用程式 43
3.4.1 創建Node.js模組封裝 43
3.4.2 將一個Node.js封裝模組發布到NPM註冊表 45
3.4.3 在Node.js應用程式中使用Node.js封裝模組 46
3.5 將數據寫入控制台 47
3.6 小結 49
3.7 下一章 49
第4章 在Node.js中使用事件、監聽器、定時器和回調 51
4.1 了解Node.js事件模型 51
4.1.1 比較事件回調和執行緒模型 51
4.1.2 在Node.js中阻塞I/O 52
4.1.3 會話示例 54
4.2 將工作添加到事件佇列 54
4.2.1 實現定時器 55
4.2.2 使用nextTick來調度工作 58
4.2.3 實現事件發射器和監聽器 59
4.3 實現回調 62
4.3.1 向回調函式傳遞額外的參數 63
4.3.2 在回調中實現閉包 64
4.3.3 鏈式回調 65
4.4 小結 66
4.5 下一章 66
第5章 在Node.js中處理數據I/O 67
5.1 處理JSON 67
5.1.1 把JSON轉換成JavaScript對象 67
5.1.2 把JavaScript對象轉換為JSON 68
5.2 使用Buffer模組緩衝數據 68
5.2.1 了解緩衝數據 69
5.2.2 創建緩衝區 69
5.2.3 寫入緩衝區 70
5.2.4 從緩衝區讀取 71
5.2.5 確定緩衝區長度 72
5.2.6 複製緩衝區 73
5.2.7 對緩衝區切片 74
5.2.8 拼接緩衝區 75
5.3 使用Stream模組來傳送數據 76
5.3.1 Readable流 76
5.3.2 Writable流 78
5.3.3 Duplex流 81
5.3.4 Transform流 82
5.3.5 把Readable流用管道輸送到Writable流 84
5.4 用Zlib壓縮與解壓縮數據 85
5.4.1 壓縮和解壓縮緩衝區 85
5.4.2 壓縮/解壓縮流 87
5.5 小結 88
5.6 下一章 88
第6章 從Node.js訪問檔案系統 89
6.1 同步和異步檔案系統調用 89
6.2 打開和關閉檔案 90
6.3 寫入檔案 91
6.3.1 簡單檔案寫入 91
6.3.2 同步檔案寫入 92
6.3.3 異步寫入檔案 93
6.3.4 流式檔案寫入 95
6.4 讀取檔案 96
6.4.1 簡單檔案讀取 96
6.4.2 同步檔案讀取 97
6.4.3 異步檔案讀取 98
6.4.4 流式檔案讀取 100
6.5 其他檔案系統任務 101
6.5.1 驗證路徑的存在性 101
6.5.2 獲取檔案信息 102
6.5.3 列出檔案 103
6.5.4 刪除檔案 104
6.5.5 截斷檔案 105
6.5.6 建立和刪除目錄 105
6.5.7 重命名檔案和目錄 106
6.5.8 監視檔案更改入 107
6.6 小結 107
6.7 下一章 107
第7章 在Node.js中實現HTTP服務 109
7.1 處理URL 109
7.1.1 了解URL對象 110
7.1.2 解析URL組件 111
7.2 處理查詢字元串和表單參數 111
7.3 了解請求、回響和伺服器對象 112
7.3.1 http.ClientRequest對象 112
7.3.2 http.ServerResponse對象 114
7.3.3 http.IncomingMessage對象 115
7.3.4 HTTP Server對象 116
7.4 在Node.js中實現HTTP客戶端和伺服器 118
7.4.1 提供靜態檔案服務 118
7.4.2 實現動態的GET伺服器 120
7.4.3 實現POST伺服器 122
7.4.4 與外部源互動 124
7.5 實現HTTPS伺服器和客戶端 127
7.5.1 創建HTTPS客戶端 127
7.5.2 創建HTTPS伺服器 129
7.6 小結 129
7.7 下一章 129
第8章 在Node.js中實現套接字服務 131
8.1 了解網路套接字 131
8.2 了解TCP伺服器和Socket對象 132
8.2.1 net.Socket對象 132
8.2.2 net.Server對象 135
8.3 實現TCP套接字伺服器和客戶端 137
8.3.1 實現TCP套接字客戶端 138
8.3.2 實現TCP套接字伺服器 140
8.4 實現TLS伺服器和客戶端 143
8.4.1 創建TLS套接字客戶端 144
8.4.2 創建TLS套接字伺服器 145
8.5 小結 147
8.6 下一章 147
第9章 在Node.js中使用多處理器擴展應用程式 149
9.1 了解process模組 149
9.1.1 了解進程I/O管道 149
9.1.2 了解進程的信號 150
9.1.3 使用process模組控制進程執行 150
9.1.4 從process模組獲取信息 151
9.2 實現子進程 153
9.2.1 了解ChildProcess對象 153
9.2.2 使用exec()在另一個進程上執行一個系統命令 154
9.2.3 使用execFile()在另一個進程上執行一個執行檔 156
9.2.4 使用spawn()在另一個Node.js實例中產生一個進程 157
9.2.5 實現子派生 159
9.3 實現進程集群 161
9.3.1 使用cluster模組 162
9.3.2 了解Worker對象 163
9.3.3 實現一個HTTP集群 164
9.4 小結 166
9.5 下一章 166
第10章 使用其他Node.js模組 167
10.1 使用os模組 167
10.2 使用util模組 169
10.2.1 格式化字元串 169
10.2.2 檢查對象類型 170
10.2.3 同步寫入輸出流 170
10.2.4 將JavaScript對象轉換為字元串 170
10.2.5 從其他對象繼承功能 171
10.2.6 使用dns模組 172
10.3 小結 174
10.4 下一章 174
第3部分 學習MongoDB
第11章 了解NoSQL和MongoDB 177
11.1 為什麼要採用NoSQL 177
11.2 了解MongoDB 178
11.2.1 理解集合 178
11.2.2 了解文檔 178
11.3 MongoDB的數據類型 179
11.4 規劃你的數據模型 180
11.4.1 使用文檔引用來規範化數據 181
11.4.2 使用嵌入式文檔反規範化數據 182
11.4.3 使用封頂集合 183
11.4.4 了解原子寫操作 184
11.4.5 考慮檔案增長 184
11.4.6 識別索引、分片和複製的機會 184
11.4.7 大集合與大量集合的對比 185
11.4.8 決定數據生命周期 185
11.4.9 考慮數據的可用性和性能 185
11.5 小結 186
11.6 下一章 186
第12章 MongoDB入門 187
12.1 構建MongoDB的環境 187
12.1.1 MongoDB的安裝 187
12.1.2 啟動MongoDB 188
12.1.3 停止MongoDB 189
12.1.4 從shell客戶端訪問MongoDB 189
12.2 管理用戶賬戶 192
12.2.1 列出用戶 192
12.2.2 創建用戶賬戶 193
12.2.3 刪除用戶 194
12.3 配置訪問控制 194
12.3.1 創建用戶管理員賬戶 195
12.3.2 打開身份驗證 196
12.3.3 創建資料庫管理員賬戶 196
12.4 管理資料庫 197
12.4.1 顯示資料庫清單 197
12.4.2 切換當前資料庫 197
12.4.3 創建資料庫 197
12.4.4 刪除資料庫 198
12.4.5 複製資料庫 198
12.5 管理集合 199
12.5.1 顯示資料庫中的集合列表 199
12.5.2 創建集合 199
12.5.3 刪除集合 200
12.5.4 在集合中查找文檔 201
12.5.5 將文檔添加到集合中 201
12.5.6 從集合中刪除文檔 202
12.5.7 更新集合中的文檔 202
12.6 小結 204
12.7 下一章 204
第13章 MongoDB和Node.js入門 205
13.1 把MongoDB的驅動程式添加到Node.js 205
13.2 從Node.js連線到MongoDB 206
13.2.1 了解寫入關注 206
13.2.2 了解Server對象 206
13.2.3 通過Client對象連線到MongoDB 207
13.2.4 通過一個連線字元串連線到MongoDB 210
13.3 了解用在MongoDB Node.js驅動程式中的對象 211
13.3.1 了解Db對象 212
13.3.2 了解Admin對象 213
13.3.3 了解Collection對象 214
13.3.4 了解Cursor對象 215
13.4 訪問和運算元據庫 216
13.4.1 列出資料庫 217
13.4.2 創建資料庫 217
13.4.3 刪除資料庫 217
13.4.4 創建、列出和刪除資料庫實例 218
13.4.5 獲取MongoDB伺服器的狀態 219
13.5 訪問和操作集合 220
13.5.1 列出集合 220
13.5.2 創建集合 221
13.5.3 刪除集合 221
13.5.4 創建、列出和刪除集合的示例 221
13.5.5 獲取集合信息 222
13.6 小結 223
13.7 下一章 223
第14章 從Node.js操作MongoDB文檔 225
14.1 了解資料庫更改選項 225
14.2 了解資料庫更新運算符 226
14.3 將文檔添加到集合 227
14.4 從集合獲取文檔 229
14.5 更新集合中的文檔 230
14.6 原子地修改文檔的集合 232
14.7 保存集合中的文檔 234
14.8 使用upsert往集合中插入文檔 235
14.9 從集合中刪除文檔 236
14.10 從集合中刪除單個文檔 238
14.11 小結 240
14.12 下一章 240
第15章 從Node.js訪問MongoDB的文檔 241
15.1 介紹數據集 241
15.2 了解query對象 242
15.3 了解查詢options對象 243
15.4 查找特定文檔集合 244
15.5 清點文檔數量 247
15.6 對結果集進行限制 249
15.6.1 按大小限制結果 249
15.6.2 限制對象返回的欄位 250
15.6.3 對結果進行分頁 252
15.7 對結果集進行排序 253
15.8 查找不同的欄位值 255
15.9 對結果進行分組 256
15.10 通過聚合結果來套用MapReduce 259
15.10.1 了解aggregate()方法 259
15.10.2 使用聚合框架運算符 260
15.10.3 實現聚合表達式運算符 261
15.10.4 聚合的例子 262
15.11 小結 263
15.12 下一章 264
第16章 利用Mongoose來使用結構化模式與驗證 265
16.1 了解Mongoose 265
16.2 利用Mongoose連線到MongoDB資料庫 266
16.3 定義模式 267
16.3.1 了解路徑 268
16.3.2 創建一個模式定義 268
16.3.3 把索引添加到一個模式 269
16.3.4 實現欄位的唯一性 269
16.3.5 強制欄位的必需性 270
16.3.6 添加Schema對象的方法 270
16.3.7 在words資料庫上實現一個模式 270
16.4 編譯模型 271
16.5 了解Query對象 272
16.5.1 設定查詢資料庫操作 273
16.5.2 設定查詢資料庫操作選項 274
16.5.3 設定查詢運算符 275
16.6 了解Document對象 276
16.7 利用Mongoose查找文檔 278
16.8 利用Mongoose添加文檔 280
16.9 利用Mongoose更新文檔 281
16.9.1 保存文檔更改 282
16.9.2 更新單個文檔 283
16.9.3 更新多個文檔 284
16.10 利用Mongoose刪除文檔 286
16.10.1 刪除單個文檔 286
16.10.2 刪除多個文檔 287
16.11 利用Mongoose聚合文檔 288
16.12 使用驗證框架 291
16.13 實現中間件函式 293
16.14 小結 295
16.15 下一章 295
第17章 高級MongoDB概念 297
17.1 添加索引 297
17.2 使用封頂集合 299
17.3 套用複製 300
17.3.1 複製策略 302
17.3.2 部署一個副本集 302
17.4 實施分片 303
17.4.1 分片伺服器類型 304
17.4.2 選擇一個分片鍵 305
17.4.3 選擇一種分區方法 306
17.4.4 部署一個分片的MongoDB集群 307
17.5 實現一個GridFS Store 310
17.5.1 在Node.js實現Grid對象 311
17.5.2 在Node.js實現GridStore對象 313
17.6 修復MongoDB資料庫 315
17.7 備份MongoDB 316
17.8 小結 317
17.9 下一章 317
第4部分 使用Express使生活更輕鬆
第18章 在Node.js中實現Express 321
18.1 Express入門 321
18.1.1 配置Express設定 321
18.1.2 啟動Express伺服器 322
18.2 配置路由 323
18.2.1 實現路由 323
18.2.2 在路由中套用參數 324
18.3 使用Request對象 328
18.4 使用Response對象 330
18.4.1 設定標頭 330
18.4.2 設定狀態 331
18.4.3 傳送回響 331
18.4.4 傳送JSON回響 333
18.4.5 傳送檔案 335
18.4.6 傳送下載回響 336
18.4.7 重定向回響 336
18.5 實現一個模板引擎 337
18.5.1 定義一個模板引擎 338
18.5.2 加入本地對象 338
18.5.3 創建模板 339
18.5.4 在回響中呈現模板 340
18.6 小結 342
18.7 下一章 342
第19章 實現Express中間件 343
19.1 了解中間件 343
19.1.1 在全局範圍內把中間件分配給某個路徑 344
19.1.2 把中間件分配到單個路由 345
19.1.3 添加多箇中間件函式 345
19.2 使用query中間件 345
19.3 提供靜態檔案服務 346
19.4 處理POST正文數據 348
19.5 傳送和接收cookie 349
19.6 實現會話 350
19.7 套用基本的HTTP身份驗證 352
19.8 實現會話身份驗證 354
19.9 創建自定義中間件 356
19.10 小結 357
19.11 下一章 357
第5部分 學習AngularJS
第20章 AngularJS入門 361
20.1 為什麼選擇AngularJS 361
20.2 了解AngularJS 362
20.2.1 模組 362
20.2.2 作用域和數據模型 363
20.2.3 具有模板和指令的視圖 363
20.2.4 表達式 363
20.2.5 控制器 363
20.2.6 數據綁定 364
20.2.7 服務 364
20.2.8 依賴注入 364
20.2.9 職責分離 364
20.3 AngularJS生命周期概述 365
20.3.1 引導階段 365
20.3.2 編譯階段 365
20.3.3 運行時數據綁定階段 366
20.4 將AngularJS與現有的JavaScript和jQuery整合 366
20.5 將AngularJS添加到Node.js的環境 367
20.6 在HTML文檔中引導AngularJS 367
20.7 使用全局API 368
20.8 創建基本的AngularJS應用程式 369
20.8.1 載入AngularJS庫和你的主模組 370
20.8.2 定義AngularJS應用程式根元素 370
20.8.3 將控制器添加到模板 370
20.8.4 實現作用域模型 371
20.9 小結 372
20.10 下一章 372
第21章 了解AngularJS模組和依賴注入 373
21.1 模組和依賴注入概述 373
21.1.1 了解模組 373
21.1.2 依賴注入 374
21.2 定義AngularJS模組 374
21.2.1 創建AngularJS Module對象 374
21.2.2 使用配置塊 375
21.2.3 使用運行塊 375
21.2.4 把提供器添加到AngularJS模組 376
21.3 實現依賴注入 377
21.4 小結 379
21.5 下一章 380
第22章 把作用域實現為數據模型 381
22.1 了解作用域 381
22.1.1 根作用域和應用程式之間的關係 381
22.1.2 作用域和控制器之間的關係 382
22.1.3 作用域和模板之間的關係 383
22.1.4 作用域和後端伺服器數據之間的關係 385
22.1.5 作用域的生命周期 385
22.2 實現作用域層次結構 387
22.3 發出和廣播活動 389
22.4 小結 392
22.5 下一章 393
第23章 使用AngularJS模板來創建視圖 395
23.1 了解模板 395
23.2 使用表達式 396
23.3 使用過濾器 399
23.3.1 使用內置過濾器 400
23.3.2 使用過濾器來實現排序和過濾 402
23.4 創建自定義過濾器 405
23.5 小結 406
23.6 下一章 407
第24章 在AngularJS視圖中實現指令 409
24.1 了解指令 409
24.2 使用內置指令 409
24.2.1 支持AngularJS功能的指令 410
24.2.2 擴展表單元素的指令 411
24.2.3 把模型綁定到頁面元素的指令 414
24.2.4 把頁面事件綁定到控制器的指令 418
24.3 創建你自己的指令來擴展HTML 420
24.3.1 定義指令視圖模板 421
24.3.2 限制指令行為 422
24.3.3 更換模板元素 423
24.3.4 轉置外部作用域 423
24.3.5 配置指令的作用域 423
24.3.6 操縱DOM的連結功能 425
24.3.7 添加一個控制器到指令 426
24.3.8 創建自定義指令 426
24.4 小結 428
24.5 下一章 429
第25章 在Web應用程式中實現AngularJS服務 431
25.1 了解AngularJS服務 431
25.2 使用內置的服務 431
25.2.1 使用$http服務傳送HTTP的GET和PUT請求 432
25.2.2 使用$cacheFactory服務 436
25.2.3 使用$window服務實現瀏覽器警報 437
25.2.4 使用$cookieStore服務與瀏覽器cookie互動 437
25.2.5 使用$interval和$timeout服務實現定時器 439
25.2.6 使用$animate服務 440
25.3 創建自定義服務 445
25.3.1 創建value服務 445
25.3.2 創建constant服務 445
25.3.3 創建factory服務 445
25.3.4 創建service服務 446
25.3.5 把服務集成在一個模組中 446
25.4 小結 447
25.5 下一章 447
第6部分 建立實用的Web應用程式組件
第26章 將用戶賬戶添加到你的網站 451
26.1 用到的庫 451
26.2 項目的目錄結構 451
26.3 定義用戶模型 452
26.4 創建伺服器 453
26.5 實現路由 454
26.6 實現用戶控制器路由 456
26.6.1 實現用戶註冊路由 456
26.6.2 實現用戶登錄路由 457
26.6.3 實現獲得用戶配置檔案的路由 457
26.6.4 實現更新用戶路由 458
26.6.5 實現刪除用戶路由 458
26.6.6 完整的用戶控制器代碼 459
26.7 實現用戶和身份驗證視圖 461
26.7.1 實現signup視圖 461
26.7.2 實現index視圖 462
26.7.3 實現login視圖 463
26.7.4 實現user視圖 464
26.7.5 添加CSS代碼到樣式視圖 466
26.8 實現AngularJS模組和控制器 466
26.9 使用社交媒體賬戶作為身份驗證來源 467
26.9.1 添加Passport 467
26.9.2 添加身份驗證策略 467
26.9.3 實現應用程式中間件 468
26.9.4 添加已驗證身份的用戶序列化和反序列化 469
26.9.5 實現路由以使用身份驗證 469
26.9.6 使用谷歌驗證身份 470
26.10 小結 473
26.11 下一章 473
第27章 添加評論主題頁 475
27.1 用到的庫 475
27.2 項目的目錄結構 475
27.3 定義評論、回復、照片和頁面模型 477
27.3.1 定義Page模型 477
27.3.2 定義Photo模型 478
27.3.3 定義CommentThread模型 478
27.4 創建評論伺服器 479
27.5 實現路由,以支持查看和添加評論 480
27.6 實現基於模型的控制器路由 481
27.6.1 實現Page模型控制器 481
27.6.2 實現Photo模型控制器 482
27.6.3 實現CommentThread模型控制器 482
27.7 實現照片和評論視圖 486
27.7.1 實現照片視圖 486
27.7.2 實現評論主題視圖 489
27.7.3 實現評論視圖 491
27.7.4 添加CSS來設定視圖的樣式 492
27.8 實現AngularJS模組和控制器來支持評論視圖 493
27.8.1 創建一個評論服務 493
27.8.2 實現照片控制器 494
27.8.3 實現頁面AngularJS控制器 495
27.8.4 完整的AngularJS應用程式 496
27.9 初始化應用程式 499
27.10 小結 500
27.11 下一章 500
第28章 創建你自己的購物車 501
28.1 項目簡介 501
28.2 用到的庫 502
28.3 項目的目錄結構 502
28.4 定義顧客、產品和訂單模式 504
28.4.1 定義地址模式 504
28.4.2 定義賬單模式 505
28.4.3 定義產品模式 505
28.4.4 定義數量模式 506
28.4.5 定義訂單模式 506
28.4.6 定義顧客模式 506
28.5 創建購物車伺服器 508
28.6 實現路由,以支持產品、購物車和訂單請求 508
28.7 實現基於模型的控制器路由 509
28.7.1 實現產品模型控制器 509
28.7.2 實現訂單模型控制器 510
28.7.3 實現顧客模型控制器 511
28.8 實現購物車和結賬視圖 513
28.8.1 實現購物視圖 513
28.8.2 實現產品視圖 515
28.8.3 實現產品頁面視圖 516
28.8.4 實現購物車視圖 516
28.8.5 實現發貨視圖 518
28.8.6 實現賬單視圖 519
28.8.7 實現覆核視圖 521
28.8.8 實現訂單視圖 523
28.8.9 添加CSS來設定視圖的樣式 524
28.9 實現AngularJS模組和控制器,以支持購物車視圖 526
28.9.1 初始化購物作用域 526
28.9.2 實現輔助函式 527
28.9.3 將物品添加到購物車 527
28.9.4 從購物車刪除物品 528
28.9.5 結賬 529
28.9.6 設定發貨信息 529
28.9.7 驗證賬單 530
28.9.8 執行購買 530
28.9.9 完整的控制器 531
28.10 初始化應用程式 534
28.11 小結 536
28.12 下一章 536
第29章 構建互動式的Web 2.0應用程式組件 537
29.1 項目簡介 537
29.2 用到的庫 538
29.3 項目的目錄結構 538
29.4 定義項目模型 540
29.5 創建應用程式伺服器 540
29.6 實現支持視圖的路由 541
29.7 實現選項卡視圖 542
29.7.1 創建AngularJS選項卡視圖模板 542
29.7.2 定義窗格模板 542
29.7.3 定義卡片模板 542
29.7.4 實現選項卡視圖 543
29.7.5 實現AngularJS自定義指令 544
29.7.6 設定卡片視圖的樣式 545
29.8 實現天氣服務視圖 546
29.8.1 創建後端天氣服務 546
29.8.2 定義天氣AngularJS控制器 548
29.8.3 定義天氣AngularJS視圖 549
29.8.4 設定天氣視圖的樣式 549
29.9 實現可拖動的元素 551
29.9.1 定義可拖動的自定義AngularJS指令 551
29.9.2 在AngularJS視圖中實現可拖動的指令 552
29.9.3 設定可拖動視圖的樣式 552
29.10 實現動態數據訪問 553
29.10.1 創建/words路由的Express路由控制器 553
29.10.2 定義表格AngularJS控制器 554
29.10.3 實現表格AngularJS視圖 556
29.10.4 設定表格視圖的樣式 557
29.11 初始化應用程式 558
29.12 小結 560