第1章 MEAN簡介 1
1.1 三層Web應用開發 1
1.2 JavaScript的演進 2
1.3 MEAN簡介 3
1.4 安裝MongoDB 4
1.4.1 在Windows上安裝MongoDB 5
1.4.2 在Mac OS X和Linux上安裝MongoDB 7
1.4.3 使用MongoDB命令行工具 8
1.5 安裝Node.js 9
1.5.1 在Windows上安裝Node.js 10
1.5.2 在Mac OS X上安裝Node.js 11
1.5.3 在Linux上安裝Node.js 12
1.5.4 運行Node.js 12
1.6 NPM簡介 13
1.7 總結 18
第2章 Node.js入門 19
2.1 Node.js簡介 19
2.1.1 JavaScript事件驅動編程 20
2.1.2 Node.js事件驅動編程 22
2.2 JavaScript閉包 23
2.3 Node模塊 24
2.3.1 CommonJS模塊 24
2.3.2 Node.js核心模塊 26
2.3.3 Node.js第三方模塊 26
2.3.4 Node.js文件模塊 26
2.3.5 Node.js文件夾模塊 27
2.4 Node.js Web應用開發 27
2.5 總結 34
第3章 使用Express開發Web應用 35
3.1 Express簡介 35
3.2 Express安裝 36
3.3 創建第一個Express應用 36
3.4 應用、請求和響應對象 37
3.4.1 應用對象 37
3.4.2 請求對象 38
3.4.3 響應對象 38
3.5 外部的中間件 39
3.6 實現MVC模式 40
3.7 Express應用配置 48
3.8 渲染視圖 51
3.8.1 配置視圖係統 51
3.8.2 EJS視圖渲染 53
3.9 靜態文件服務 53
3.10 配置會話 55
3.11 總結 57
第4章 MongoDB入門 58
4.1 NoSQL簡介 58
4.2 MongoDB簡介 60
4.3 MongoDB的關鍵特性 61
4.3.1 BSON格式 61
4.3.2 MongoDB即席查詢 61
4.3.3 MongoDB索引 62
4.3.4 MongoDB副本集 63
4.3.5 MongoDB分片 64
4.4 MongoDB命令行工具 65
4.5 MongoDB數據庫 66
4.6 MongoDB集閤 66
4.7 MongoDB增刪改查操作 67
4.7.1 創建新文檔 67
4.7.2 讀取文檔 68
4.7.3 更新已有文檔 69
4.7.4 刪除文檔 70
4.8 總結 71
第5章 Mongoose入門 72
5.1 Mongoose簡介 72
5.1.1 安裝Mongoose 72
5.1.2 連接MongoDB 73
5.2 理解Mongoose的模式 74
5.2.1 創建User模式與模型 74
5.2.2 注冊USer模型 75
5.2.3 使用save()創建新文檔 75
5.2.4 使用find()查找多個文檔 77
5.2.5 使用findOne()讀取單個文檔 79
5.2.6 更新已有文檔 80
5.2.7 刪除已有文檔 81
5.3 擴展Mongoose模式 82
5.3.1 定義默認值 82
5.3.2 使用模式修飾符 83
5.3.3 增加虛擬屬性 85
5.3.4 使用索引優化查詢 85
5.4 模型方法自定義 86
5.4.1 自定義靜態方法 86
5.4.2 自定義實例方法 87
5.5 模型的校驗 87
5.5.1 預定義的驗證器 87
5.5.2 自定義的驗證器 89
5.6 使用Mongoose中間件 89
5.6.1 預處理中間件 89
5.6.2 後置處理中間件 90
5.7 使用Mongoose DBRef 90
5.8 總結 91
第6章 使用Passport模塊管理用戶權限 92
6.1 Passport簡介 92
6.1.1 安裝 92
6.1.2 配置 93
6.2 理解Passport策略 95
6.2.1 使用Passport的本地策略 95
6.2.2 修改User模型 97
6.2.3 創建身份驗證視圖 99
6.2.4 修改用戶控製器 101
6.2.5 添加用戶路由 105
6.3 理解Passport的OAuth策略 107
6.4 總結 118
第7章 AngularJS入門 119
7.1 AngularJS簡介 119
7.2 AngularJS的核心概念 119
7.2.1 核心模塊 120
7.2.2 模塊 120
7.2.3 雙嚮數據綁定 121
7.2.4 依賴注入 122
7.2.5 AngularJS指令 123
7.2.6 AngularJS應用的引導 124
7.3 安裝AngularJS 125
7.3.1 Bower包管理器 125
7.3.2 配置Bower 126
7.3.3 使用Bower安裝AngularJS 126
7.3.4 配置AngularJS 127
7.4 AngularJS應用的結構 127
7.5 引導AngularJS應用 130
7.6 AngularJS的MVC實體 131
7.6.1 視圖 132
7.6.2 控製器和scope 133
7.7 AngularJS路由 135
7.7.1 安裝ngRoute模塊 136
7.7.2 配置URL模式 137
7.7.3 AngularJS應用路由 137
7.8 AngularJS服務 139
7.8.1 預置服務 139
7.8.2 自定義服務 140
7.8.3 服務的使用 141
7.9 管理AngularJS的身份驗證 141
7.9.1 將user對象填充到視圖 141
7.9.2 添加身份驗證服務 142
7.9.3 使用身份驗證服務 144
7.10 總結 144
第8章 創建MEAN的CURD模塊 145
8.1 CURD模塊簡介 145
8.2 配置Express組件 145
8.2.1 創建Mongoose模型 146
8.2.2 建立Express控製器 147
8.2.3 編寫Express路由 152
8.2.4 配置Express應用 153
8.3 ngResource模塊簡介 154
8.3.1 安裝ngResource模塊 154
8.3.2 使用$resource服務 156
8.4 實現AngularJS的MVC模塊 157
8.4.1 創建模塊服務 157
8.4.2 建立模塊控製器 158
8.4.3 實現模塊視圖 161
8.4.4 編寫AngularJS路由 164
8.5 最終實現 164
8.6 總結 166
第9章 基於Socket.io的實時通信 167
9.1 WebSockets簡介 167
9.2 Socket.io簡介 168
9.2.1 Socket.io服務器端對象 169
9.2.2 Socket.io客戶端對象 171
9.2.3 Socket.io的事件 171
9.2.4 Socket.io命名空間 174
9.2.5 Socket.io的房間 175
9.3 Socket.io的安裝 176
9.3.1 配置Socket.io的服務器 177
9.3.2 配置Socket.io的會話 178
9.4 使用Socket.io創建聊天室 182
9.4.1 設置聊天服務器的事件處理程序 182
9.4.2 在AngularJS中創建Socket服務 184
9.4.3 控製器 185
9.4.4 視圖 186
9.4.5 路由 186
9.4.6 實現 187
9.5 總結 189
第10章 MEAN應用的測試 190
10.1 JavaScript測試簡介 190
10.1.1 TDD、BDD和單元測試 191
10.1.2 測試框架 192
10.1.3 斷言庫 192
10.1.4 測試執行過程管理工具 192
10.2 Express應用測試 193
10.2.1 Mocha簡介 193
10.2.2 Should.js簡介 194
10.2.3 SuperTest簡介 194
10.2.4 Mocha的安裝 195
10.2.5 安裝Should.js和SuperTest模塊 195
10.2.6 測試環境配置 196
10.2.7 編寫Mocha測試 197
10.2.8 執行Mocha測試 201
10.3 AngularJS應用測試 202
10.3.1 Jasmine框架簡介 203
10.3.2 AngularJS單元測試 203
10.3.3 AngularJS E2E測試 213
10.4 總結 217
第11章 MEAN應用的調試與自動化 218
11.1 構建工具Grunt 218
11.1.1 安裝 218
11.1.2 Grunt的配置 220
11.2 使用node-inspector調試Express程序 230
11.2.1 使用Grunt任務安裝node-inspector 231
11.2.2 使用Grunt任務配置node-inspector 232
11.2.3 使用Grunt任務運行調試 234
11.3 使用Batarang調試AngularJS程序 236
11.4 總結 241
· · · · · · (
收起)