MEAN全棧開發(第2版) 使用Mongo,Express, Angular和Node

MEAN全棧開發(第2版) 使用Mongo,Express, Angular和Node

《MEAN全棧開發(第2版) 使用Mongo,Express, Angular和Node》是2020年清華大學出版社出版的圖書,作者是[美]西蒙·霍姆斯(Simon Holmes),[美]克萊夫·哈伯(Clive Harber)

基本介紹

  • 中文名:MEAN全棧開發(第2版) 使用Mongo,Express, Angular和Node
  • 作者:[美]西蒙·霍姆斯(Simon Holmes)、[美]克萊夫·哈伯(Clive Harber)
  • 出版社:清華大學出版社
  • 出版時間:2020年6月
  • 頁數:536 頁
  • 定價:128 元
  • 裝幀:平裝
  • ISBN:9787302551850
  • 叢書:Web開發經典叢書
內容簡介,目錄,

內容簡介

《MEAN全棧開發(第2版) 使用Mongo、Express、Angular和Node》將指導你使用MEAN技術棧開發Web應用程式。本書秉承實用的原則,最開始的幾章將引導你使用Express和Node搭建一個靜態網站。之後以這個靜態網站為基礎,整合MongoDB資料庫,構建 API 並增加身份驗證功能。隨著學習的深入,你將掌握關於創建動態、回響式以及數據驅動的Web應用程式的大量專業知識。 ● MongoDB4、Express4、Angular7和Node.js11 ● MEAN技術棧架構 ● 適用於移動設備的Web套用 ● 關於效率和可重用性方面的最佳實踐 Simon Holmes從2000年開始從事全棧開發工作,同時也是一名解決方案架構師、講師、團隊領導和項目經理。他還經營著一家培訓公司,名為Full Stack Training Ltd。Simon 的開發經驗非常豐富,通過實際工作中的指導和訓練,他非常了解人們的痛點。 Clive Harber從13歲開始編寫電腦程式。他從威爾斯斯望西大學取得化學工程碩士學位,多年來為體育和博彩業、電信、醫療保健和零售業編寫過使用多種程式語言和不同範例的代碼。現階段,他希望能夠為編程社區貢獻自己的力量。Clive曾擔任Manning出版社其他書籍的審校者和技術審校者,包括《Vue.js實戰》、Testing Vue.js Applications、《React實戰》、Elixir in Action、Mesos in Action、Usability Matter...(展開全部) Simon Holmes從2000年開始從事全棧開發工作,同時也是一名解決方案架構師、講師、團隊領導和項目經理。他還經營著一家培訓公司,名為Full Stack Training Ltd。Simon 的開發經驗非常豐富,通過實際工作中的指導和訓練,他非常了解人們的痛點。 Clive Harber從13歲開始編寫電腦程式。他從威爾斯斯望西大學取得化學工程碩士學位,多年來為體育和博彩業、電信、醫療保健和零售業編寫過使用多種程式語言和不同範例的代碼。現階段,他希望能夠為編程社區貢獻自己的力量。Clive曾擔任Manning出版社其他書籍的審校者和技術審校者,包括《Vue.js實戰》、Testing Vue.js Applications、《React實戰》、Elixir in Action、Mesos in Action、Usability Matters、《Mountebank微服務測試》、Cross-Platform Desktop Applications和Web Components in Action。

目錄

第Ⅰ部分 設定基線
第1章 全棧開發介紹 3
1.1 為何學習全棧 4
1.1.1 Web開發簡史 4
1.1.2 全棧開發的趨勢 6
1.1.3 學習全棧開發的益處 7
1.1.4 為何專門介紹MEAN 7
1.2 Node.js介紹 8
1.2.1 JavaScript:MEAN技術棧中唯一的語言 9
1.2.2 快速、高效和可擴展 9
1.2.3 通過npm使用預構建的包 12
1.3 Express介紹 13
1.3.1 簡化伺服器配置 13
1.3.2 路由回響URL 13
1.3.3 視圖:HTML回響 13
1.3.4 通過會話記錄訪問者的信息 14
1.4 MongoDB介紹 14
1.4.1 關係資料庫與文檔資料庫 14
1.4.2 MongoDB文檔:JavaScript數據存儲 15
1.4.3 不止是文檔資料庫 16
1.4.4 MongoDB的不足之處 16
1.4.5 Mongoose:關於數據建模更多的事 16
1.5 Angular介紹 17
1.5.1 jQuery和Angular 18
1.5.2 雙向數據綁定:處理頁面中的數據 18
1.5.3 使用Angular載入新頁面 18
1.5.4 Angular的缺陷 19
1.5.5 使用TypeScript進行開發 20
1.6 相關配套支持 20
1.6.1 使用Twitter Bootstrap創建用戶界面 20
1.6.2 使用Git管理原始碼的版本 21
1.6.3 使用Heroku作為主機 22
1.7 結合實際示例將它們結合到一起 22
1.7.1 介紹應用程式示例 22
1.7.2 MEAN技術棧組件如何協同工作 24
1.8 本章小結 24
第2章 設計MEAN技術棧架構 27
2.1 通用的MEAN技術棧架構 27
2.2 進一步了解單頁面套用 28
2.2.1 對搜尋引擎不友好 29
2.2.2 Google Analytics和瀏覽器歷史記錄 30
2.2.3 初始化速度 30
2.2.4 選擇單頁面套用還是非單頁面套用 31
2.3 設計一種靈活的MEAN架構 32
2.3.1 部落格引擎需求 32
2.3.2 部落格引擎架構 33
2.3.3 最佳實踐:為數據層構建內部API 36
2.4 規劃真實的應用程式 37
2.4.1 整體規劃應用程式 38
2.4.2 設計應用程式的架構 39
2.4.3 將所有內容封裝到Express項目中 41
2.4.4 最終產品 42
2.5 將開發按階段規劃 42
2.5.1 快速成型的開發階段 43
2.5.2 構建Loc8r的步驟 44
2.6 硬體架構 50
2.6.1 開發環境需要的硬體 50
2.6.2 生產環境需要的硬體 50
2.7 本章小結 52
第Ⅱ部分 構建Node Web應用程式
第3章 創建並設定MEAN項目 55
3.1 Express、Node和npm簡介 57
3.1.1 使用package.json定義包 57
3.1.2 package.json檔案中的依賴版本號 58
3.1.3 使用npm安裝Node依賴 58
3.2 創建Express項目 60
3.2.1 安裝工具 60
3.2.2 查看安裝狀態 61
3.2.3 創建項目資料夾 61
3.2.4 配置Express 61
3.2.5 創建並運行Express項目 63
3.2.6 重啟應用程式 66
3.3 支持MVC的Express 67
3.3.1 MVC總覽 68
3.3.2 改變資料夾結構 68
3.3.3 使用改變位置後的視圖和路由 69
3.3.4 從路由中拆分控制器 71
3.4 導入Bootstrap以快速實現回響式布局 74
3.4.1 下載並添加Bootstrap到應用程式中 74
3.4.2 在應用程式中使用Bootstrap 75
3.5 使用Heroku 78
3.5.1 設定Heroku 78
3.5.2 使用Git將網站發布到線上URL 80
3.6 本章小結 83
第4章 使用Node和Express構建靜態站點 85
4.1 定義Express路由 86
4.2 構建基本控制器 89
4.2.1 設定控制器 89
4.2.2 測試控制器和路由 91
4.3 創建視圖 92
4.3.1 使用Bootstrap 93
4.3.2 使用Pug模板和Bootstrap設定HTML框架 94
4.3.3 構建模板 99
4.4 添加其他視圖 103
4.4.1 地點詳情頁 104
4.4.2 添加評論頁 108
4.4.3 添加關於頁 109
4.5 將數據從視圖中分離,讓視圖更智慧型 111
4.5.1 將數據從視圖移到控制器 113
4.5.2 處理複雜的重複數據模型 115
4.5.3 運算元據和視圖 119
4.5.4 使用include和mixin創建可重用的布局組件 120
4.5.5 查看主頁 122
4.5.6 更新其他視圖和控制器 124
4.6 本章小結 125
第5章 使用MongoDB和Mongoose構建數據模型 127
5.1 使用Mongoose將Express應用程式連線到MongoDB 129
5.1.1 將Mongoose添加到應用程式 130
5.1.2 將Mongoose連線添加到應用程式 131
5.2 為什麼要為數據建模 137
5.2.1 Mongoose的定義及工作原理 138
5.2.2 使用Mongoose進行數據建模 139
5.2.3 分解模式路徑 140
5.3 定義簡單的Mongoose模式 141
5.3.1 模式的基本設定 141
5.3.2 在MongoDB和Mongoose中使用地理位置數據 144
5.3.3 使用子文檔創建複雜模式 146
5.3.4 最終的模式結果 152
5.3.5 將Mongoose模式編譯為模型 154
5.4 使用MongoDB shell創建MongoDB資料庫並添加數據 156
5.4.1 MongoDB shell基本知識 156
5.4.2 創建MongoDB資料庫 158
5.5 將資料庫發布到線上環境 161
5.5.1 設定mLab並獲取資料庫URI 162
5.5.2 推送數據 164
5.5.3 讓應用程式使用正確的資料庫 166
5.6 本章小結 169
第6章 編寫REST API:向應用程式公開MongoDB資料庫 171
6.1 REST API規則 172
6.1.1 請求URL 173
6.1.2 請求方式 174
6.1.3 回響和狀態碼 176
6.2 在Express中設定API 177
6.2.1 創建路由 178
6.2.2 創建占位控制器 180
6.2.3 從Express請求返回JSON數據 181
6.2.4 導入控制器 181
6.2.5 測試API 183
6.3 GET請求方式:從MongoDB讀取數據 184
6.3.1 在MongoDB中使用Mongoose查找單個文檔 184
6.3.2 根據ID查找單個子文檔 188
6.3.3 使用地理位置查詢多個文檔 191
6.4 Post請求方式:向MongoDB添加數據 198
6.4.1 在MongoDB中創建文檔 198
6.4.2 使用Mongoose校驗數據 200
6.4.3 在MongoDB中創建新的子文檔 202
6.5 PUT請求方式:更新MongoDB數據 206
6.5.1 在MongoDB中使用Mongoose更新文檔 206
6.5.2 使用Mongoose的save方法 206
6.5.3 更新MongoDB中已存在的子文檔 209
6.6 DELETE請求方式:刪除MongoDB數據 211
6.6.1 刪除MongoDB中的文檔 211
6.6.2 刪除MongoDB中的子文檔 213
6.7 本章小結 215
第7 章 消費REST API:使用來自 Express內部的API 217
7.1 如何調用Express API 218
7.1.1 添加request模組 218
7.1.2 設定默認選項 219
7.1.3 使用request模組 219
7.2 使用API返回列表數據:Loc8r主頁 221
7.2.1 關注分離:將渲染移入命名函式 221
7.2.2 構建API請求 222
7.2.3 使用API回響數據 223
7.2.4 在展示數據前修改數據:修改距離值 225
7.2.5 捕獲API返回的錯誤 227
7.3 從API獲取單個文檔:Details頁面 232
7.3.1 關注分離:將渲染移入命名函式 234
7.3.2 使用URL中的ID參數查詢API 234
7.3.3 將數據從API傳遞到視圖 235
7.3.4 調試並修復視圖錯誤 236
7.3.5 使用Pug mixin格式化日期數據 238
7.3.6 創建基於返回狀態的錯誤頁 239
7.4 通過API向資料庫添加數據:添加Loc8r用戶評論 242
7.4.1 設定路由和視圖 242
7.4.2 提交評論數據到API 247
7.5 通過數據驗證保護數據完整性 249
7.5.1 在模式中使用Mongoose驗證 249
7.5.2 使用Node和Express在應用程式層進行驗證 253
7.5.3 使用jQuery在瀏覽器中進行驗證 255
7.6 本章小結 256
第Ⅲ部分 使用Angular創建動態頁面
第8章 使用TypeScript開發Angular應用程式 259
8.1 創建並運行Angular 260
8.1.1 使用命令行創建Angular模板應用程式 260
8.1.2 運行 Angular應用程式 262
8.1.3 應用程式的原始碼 262
8.2 開發 Angular 組件 269
8.2.1 創建新的home-list組件 269
8.2.2 創建 HTML模板 271
8.2.3 從模板向組件遷移數據 274
8.2.4 在HTML模板中引用類的成員變數 277
8.3 從API接口中獲取數據 284
8.3.1 創建數據服務 285
8.3.2 調用數據服務 288
8.4 在生產環境中部署Angular應用程式 292
8.4.1 構建生產環境中的Angular應用程式 292
8.4.2 集成Express站點和Angular應用程式 292
8.5 本章小結 295
第9章 使用Angular開發單頁面套用:基礎 297
9.1 為Angular SPA添加跳轉功能 298
9.1.1 導入Angular路由模組並定義第一個路由 299
9.1.2 路由配置 299
9.1.3 創建framework組件以及導航欄 300
9.1.4 使用router-outlet定義顯示內容 302
9.1.5 在不同頁面之間跳轉 303
9.1.6 為跳轉連結增加選中樣式 305
9.2 使用多個嵌套組件構建模組化的應用程式 306
9.2.1 創建homepage組件 307
9.2.2 創建並使用可復用組件 309
9.3 根據地理位置查找附近地點 316
9.3.1 創建Angular 地理位置服務 316
9.3.2 在應用程式中添加地理位置服務 318
9.3.3 在home-list組件中使用地理位置服務 319
9.4 安全綁定 HTML片段 324
9.4.1 完善關於頁的內容 324
9.4.2 創建用於轉義換行符的管道 325
9.4.3 屬性綁定:安全地綁定HTML片段 327
9.5 挑戰 328
9.6 本章小結 329
第10章 使用Angular開發單 頁面套用:進階 331
10.1 處理更複雜的視圖和路由參數 332
10.1.1 規劃頁面布局 332
10.1.2 創建組件 333
10.1.3 根據URL參數設定和定義路由 335
10.1.4 在組件和服務中使用URL參數 337
10.1.5 向詳情頁組件傳遞數據 341
10.1.6 構建詳情頁視圖 343
10.2 處理表單和提交數據 349
10.2.1 使用Angular添加評價 350
10.2.2 向API提交表單數據 355
10.3 最佳化現有架構 362
10.3.1 使用單獨的檔案保存路由配置 362
10.3.2 最佳化 Location類的定義方式 366
10.4 使用SPA替換伺服器端應用程式 371
10.4.1 在Express中配置build資料夾對應的路由 372
10.4.2 開發URL多級路徑的相關功能 374
10.5 本章小結 375
第Ⅳ部分 管理身份認證和用戶會話
第11章 認證用戶、管理會話和 API安全 379
11.1 如何在MEAN技術棧中實現身份認證功能 380
11.1.1 傳統方式 380
11.1.2 在MEAN技術棧中使用傳統方式 382
11.1.3 完整的MEAN技術棧方式 382
11.2 為MongoDB創建user模式 384
11.2.1 單向密碼加密:hash和salt 384
11.2.2 構建Mongoose模式 385
11.2.3 基本的user模式 385
11.2.4 使用Mongoose方法設定加密屬性 386
11.2.5 驗證提交的密碼 387
11.2.6 生成JSON Web Token 388
11.3 使用Passport創建身份認證API 391
11.3.1 安裝和配置Passport 392
11.3.2 創建API終端以返回JWT 395
11.4 保護相關的API終端 400
11.4.1 向Express路由添加身份認證中間件 400
11.4.2 在控制器中使用JWT信息 403
11.5 本章小結 406
第12章 在Angular應用程式中 使用身份認證API 407
12.1 創建Angular身份認證服務 407
12.1.1 在Angular中管理用戶會話 408
12.1.2 允許用戶註冊、登錄和註銷 410
12.1.3 在Angular服務中使用JWT數據 413
12.2 創建Register和Login頁面 414
12.2.1 創建Register頁面 415
12.2.2 構建Login頁面 420
12.3 在Angular應用程式中使用身份認證 423
12.3.1 更新導航 423
12.3.2 為導航添加右側區域 423
12.4 本章小結 434
附錄A 安裝MEAN技術棧 435
附錄B 安裝其他技術棧 439
附錄C 改造所有視圖 447
附錄D 再次介紹JavaScript 457
· · · · · · (收起)

相關詞條

熱門詞條

聯絡我們