《全棧技能修煉:使用Angular和SpringBoot打造全棧套用》是2019年9月電子工業出版社出版的圖書,作者是王芃。
基本介紹
- 書名:全棧技能修煉:使用Angular和SpringBoot打造全棧套用
- 作者:王芃
- ISBN:9787121371837
- 出版社:電子工業出版社
- 出版時間:2019年9月
- 頁數:508
- 字數:732千字
- 開本:16開
- 版次:01-01
內容簡介,圖書目錄,
內容簡介
本書涉及很多平台、框架和類庫等,主要有前端使用的Angular,後端使用的Spring Boot框架、Spring Security安全框架,資料庫涉及MongoDB、Elasticsearch和Redis。此外,還會學習函式式編程、回響式編程(RxJS)、Redux等理念,Swagger、JaVers等工具及Rest、WebSocket、微服務等概念。一本書是無法深入這些技術細節的,這也不是本書的目標。希望通過本書,可以幫助讀者開啟一扇門,真正掌握這些讓人眼花繚亂的程式語言、框架、平台、IDE等技術背後的編程思想。
圖書目錄
第1章 技術的選型和環境搭建1
1.1 技術選型1
1.1.1 前端框架選型2
1.1.2 後端框架選型3
1.1.3 資料庫選型3
1.2 環境搭建5
1.2.1 基礎開發環境安裝5
1.2.2 IDE 的選擇7
1.2.3 字型的選擇8
1.2.4 定義通用的代碼格式9
1.3 工程項目的結構10
1.3.1 前端項目10
1.3.2 後端項目13
1.3.3 整體項目工程的檔案結構14
第2章 使用Angular快速構造前端原型17
2.1 Angular 基礎概念17
2.1.1 安裝 Angular CLI17
2.1.2 依賴性注入22
2.1.3 組件27
2.1.4 指令28
2.1.5 管道30
2.1.6 模組31
2.1.7 模板驅動型表單33
2.1.8 回響式表單46
2.2 Angular Material 介紹55
2.2.1 組件類別55
2.2.2 布局控制項:Sidenav57
2.2.3 Flex 布局和 Angular Flex-layout60
2.2.4 封裝 Header/Footer/Sidebar62
2.3 添加主題支持78
2.3.1 Material Design 中對於主題的約束79
2.3.2 主題的明與暗79
2.3.3 Angular Material 中的主題80
2.4 容器化 Angular 套用83
2.4.1 什麼是容器83
2.4.2 安裝 Docker84
2.4.3 鏡像倉庫加速85
2.4.4 創建 Angular 的 Docker 鏡像85
2.4.5 啟動容器87
2.4.6 使用 docker-compose 組織複雜的環境配置88
2.4.7 使用 .dockerignore 檔案91
第3章 何謂後端92
3.1 創建一個 Spring Boot 工程93
3.1.1 通過 Gradle 創建93
3.1.2 通過 Maven 創建99
3.1.3 通過 IDE 創建103
3.1.4 工程項目的組織105
3.2 API 的構建可以如此簡單109
3.2.1 API 工程結構109
3.2.2 領域對象111
3.2.3 構造 Controller112
3.2.4 啟動服務113
3.2.5 測試 API115
3.3 MongoDB 支撐的 API116
3.3.1 什麼是 NoSQL116
3.3.2 MongoDB 的集成119
3.3.3 HATEOAS124
3.3.4 “魔法”的背後129
3.3.5 讓後端也能熱更新132
3.4 容器化後端135
3.4.1 手動創建鏡像135
3.4.2 使用 Gradle 自動化 Docker 任務137
3.4.3 使用 docker-compose 組合服務141
3.4.4 IDEA 中的 Gradle 支持142
3.4.5 在容器中調試143
第4章 登錄鑒權功能的構建145
4.1 模組化和組件化145
4.1.1 登錄的領域模型構建145
4.1.2 前端頁面設計147
4.2 回響式編程初探166
4.2.1 不同的視角166
4.2.2 實現一個計數器169
4.2.3 為什麼要使用 Rx177
4.2.4 Observable 的性質178
4.2.5 RxJS 的調試180
4.3 前端服務層184
4.3.1 構建“偽”服務184
4.3.2 構建“聰明組件”188
4.3.3 路由處理192
4.4 完成忘記密碼前端設計194
4.4.1 使用 RxJS 打造簡訊驗證碼控制項194
4.4.2 忘記密碼嚮導“笨組件”199
4.4.3 忘記密碼的“聰明組件”203
第5章 構建後端API205
5.1 HyperMedia API 與傳統 API205
5.1.1 領域對象205
5.1.2 API的可見控制211
5.1.3 傳統的 API 實現模式218
5.2 Spring Data 中的查詢221
5.2.1 基礎概念——Repository221
5.2.2 查詢方式223
5.2.3 複雜類型查詢226
5.2.4 自定義查詢228
5.2.5 自定義 Repository229
5.3 Controller 的構建230
5.3.1 改造 TaskRepo 和 UserRepo230
5.3.2 實現 Controller231
5.3.3 登錄234
5.3.4 註冊235
5.3.5 忘記密碼第一步:驗證手機236
5.3.6 忘記密碼第二步:重置密碼244
5.3.7 API 的異常處理246
5.4 構建安全的 API 接口255
5.4.1 為什麼要保護 API256
5.4.2 什麼是JWT256
5.4.3 JWT的生成和解析259
5.4.4 許可權的設計260
5.4.5 使用 Spring Security 規劃角色安全261
5.4.6 在 Spring Boot 中啟用 Spring Security265
5.4.7 改造用戶對象266
5.4.8 構建 JWT token 工具類268
5.4.9 如何檢查任何請求的授權信息272
5.4.10 得到用戶信息275
5.4.11 配置 Spring Security277
5.4.12 使用 JWT 進行 API 訪問292
5.5 跨域和 API 文檔305
5.5.1 跨域解決方案——CORS305
5.5.2 API 文檔309
第6章 前端和API的配合322
6.1 回響式的 HTTP API 處理322
6.1.1 Angular 中的 HTTP 服務322
6.1.2 Angular 的開發環境配置323
6.1.3 在前端服務中使用 HttpClient327
6.1.4 更改註冊表單控制項331
6.2 RxJs進階332
6.2.1 改造登錄表單332
6.2.2 RxJs的高階操作符333
6.2.3 合併操作符339
6.3 HTTP 攔截342
6.3.1 實現一個簡單的 HttpInterceptor342
6.3.2 鑒權HttpInterceptor343
6.3.3 一個日誌攔截器345
6.4 Angular 路由346
6.4.1 基準錨連結346
6.4.2 Router 模組的簡介347
6.4.3 獲取父路由的參數354
6.4.4 獲得前一個路由354
6.4.5 Activated Route354
6.5 安全守衛355
6.5.1 激活守衛356
6.5.2 激活子路由守衛357
6.5.3 載入守衛358
6.5.4 退出守衛359
6.5.5 數據預獲取守衛359
第7章 後端不只是API361
7.1 快取361
7.1.1 配置 Cache362
7.1.2 常用的快取註解364
7.1.3 測試快取是否生效366
7.2 Redis 作為快取框架368
7.2.1 Redis 的安裝配置369
7.2.2 在 Spring Boot 中集成 Redis370
7.2.3 Redisson373
7.3 使用 ElasticSearch 提升搜尋性能375
7.3.1 配置375
7.3.2 構建用戶查詢 API379
7.4 Spring Boot Actuator 和數據審計390
7.4.1 初窺審計事件390
7.4.2 實現套用的數據審計394
7.4.3 JaVers 和 Spring Boot 集成396
7.5 WebSocket 實時通信服務401
7.5.1 HTTP 和 WebSocket 的區別和聯繫402
7.5.2 何時使用 WebSocket403
7.5.3 STOMP403
7.5.4 WebSocket 配置404
7.5.5 WebScoket 安全406
7.5.6 建立一個實時訊息 Controller409
7.5.7 測試 WebSocket409
7.6 Spring Boot 的自動化測試411
第8章 前端的工程化422
8.1 使用 Redux 管理狀態423
8.1.1 何時需要使用 Redux423
8.1.2 Redux 的核心概念424
8.1.3 在 Angular 中使用 Redux429
8.1.4 Selector——狀態選擇器434
8.2 使用 Effects管理的副作用437
8.3 使用 @ngrx/entity 提升生產效率441
8.4 服務端渲染446
8.4.1 Angular Universal 的工作機理447
8.4.2 安裝依賴447
8.4.3 添加伺服器端渲染模組448
8.4.4 使用 Node.js Express 構建伺服器450
8.4.5 伺服器端渲染中出現重複請求的處理453
第9章 Spring Cloud打造微服務455
9.1 微服務的體系架構455
9.1.1 服務即組件456
9.1.2 微服務架構下的組織機構變化456
9.1.3 產品化服務458
9.1.4 持續集成和持續發布458
9.1.5 監控和報警458
9.1.6 Spring Cloud 項目依賴459
9.2 配置服務和發現服務461
9.2.1 配置中心是什麼461
9.2.2 發現服務465
9.3 監控服務和路由服務472
9.3.1 Spring Boot Admin473
9.3.2 路由服務478
9.4 微服務的遠程調用485
9.4.1 Feign Client485
9.4.2 負載均衡490
附錄A 常見雲服務使用問題匯總492