-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

全棧技能修煉:使用Angular和Spring Boot 打造全棧應用

( 簡體 字)
作者:王芃類別:1. -> 程式設計 -> 網路編程 -> AngularJS
   2. -> 程式設計 -> JAVA -> Spring
譯者:
出版社:電子工業出版社全棧技能修煉:使用Angular和Spring Boot 打造全棧應用 3dWoo書號: 51849
詢問書籍請說出此書號!

缺書
NT售價: 545

出版日:9/1/2019
頁數:508
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121371837
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推薦序
認識王芃是因為他的文章。
對我這樣的憊懶中年人來說,要堅持不懈地寫文章實在是有點難,每每提筆都難以成章——寧可靠寫程序來麻醉自己。這,或許是另一種形式的“中年危機”?
但同樣已屆中年的王芃卻能筆耕不輟,他不僅擅長寫文章、寫書,還經營著一家公司,讓人嘆服。
對于程序員來說,道路千萬條,熱忱第一條。無論你是希望像我一樣在技術的道路上一條道走到黑,還是像王芃一樣“技術、業務、管理”兼修,首先要具備的就是對技術的滿腔熱忱。
全棧,是技術領域的一條 Hard Way,選擇它,你就要付出很多額外的努力——并非是996,而是通過更多、更努力的思考(工作955,思考7×24)。其回報則是在多年之后,每當別人提起你時都會不禁贊嘆:“瞧那位 Hardcore 的程序員!”沒有付出就沒有回報。相對于少數幾條 Hard Way 來說,世界上還有無數條 Easy Way。如果你對 Hard Way 有著恐懼或猶疑,那么,請放下這本書,隨便拿起一本“21天精通×××”。
如果這都沒有嚇跑你,那么我要向你透露一個價值連城的秘密——“全棧并不難”。至少,對勤于思考的人來說,全棧是一個自然而然的結果,并不需要額外的代價。你之所以曾經覺得全棧難,是因為眼界受到限制。
現在,請聽我說。
武俠小說里常常會說打通任督二脈之后功力大增,為什么打通任督二脈如此重要?因為它們統率著全身的經脈,它們是一切經脈的根本。相對于其他經脈來說,任督二脈很簡單,但也最難打通。
全棧也是如此。經過多年的發展,技術體系變得非常龐雜——看看層出不窮的技術知識圖就知道了,但是你是否曾注意到很多同樣的思想被到處套用?不僅在同一個技術體系內如此,跨體系的套用其實更加明顯。比如 RxJS 的事件流、后端的 MessageQueue 與現在大熱的 Serverless 架構在深層思想上有著千絲萬縷的聯系。有了這種眼光,你不僅可以更輕松地跨領域學習,更重要的是,你會擁有極為難得的預見力。而技術預見力,能讓你領先別人三年——哪怕半路在樹下睡一覺都不用怕——果然是我這種憊懶中年人的上佳之選啊。當然,如果你是仍有著雄心壯志的青年,應該會更明白預見力的價值,有朝一日,你的預見力甚至不會再局限于技術。
與通常的理解不同,在我看來,全棧,不是特定技術的組合,而是一種思維方式,一種眼界。即使這本書講的是 Angular + SpringBoot,即使我是在 Angular 領域的 Google 開發者專家,我仍然要鄭重提醒你——閱讀時請跳出具體的技術,努力從更高的層次上理解它。
全棧,就是技術的任督二脈。它把大量的技術思想貫穿在前后端這兩條主線中。它們既有區別,又有聯系。既不會抽象到讓你找不到具體的例子去理解這些思想,也不會狹隘到讓你只知其然而不知其所以然。所以,如果你曾是個前端開發者,那么請了解下 Java 的“注解”及其對 Spring 演化的影響,思考下“POJO + 注解”的模式為什么會流行起來。如果你曾是個后端開發者,那么請了解一下 RxJS 在前端的應用,及其與 MessageQueue 的共同點,了解下Filter 和 Interceptor 的共同點及其背后的思想。而無論你是前端開發者還是后端開發者,思考下 Java 與 TypeScript 這兩種語言背后的設計思想都會讓你受益匪淺。
總之,不要囿于門戶之見。沒有前端工程師,也沒有后端工程師,一個有技術追求的程序員,首先要是一個工程師。工程師的思維與熱忱,才是你最寶貴的財富。
是為序。

雪狼——汪志成
ThoughtWorks 高級咨詢師,Google Developer Expert
二十年碼農,全棧工程師,儒生,Angular 中文文檔譯者
2019.05.14



前言



全棧的目的并不是一個人搭建起一個復雜的商業應用,在現代軟件大工程化的今天,這個目標既沒有必要,也沒有價值。全棧的概念對筆者來說是一個不斷擴充視野、持續學習的過程,通過不同語言、不同框架、不同平臺的學習,知道什么是好的軟件設計,什么是好的 UI/UE設計,什么是好的編程習慣;了解在不同的模型中,對同一個問題是怎樣解決的,有什么優點和缺點。
讓人眼花繚亂的編程語言、框架、平臺、IDE 等,其實就是開發人員的工具箱。學會這些工具的使用不只是為了成為一個熟練的技術員,更重要的是,知道現實世界的問題是什么,對應的解決方案有哪些,然后才是選擇合適的工具高效地解決問題。如今,在開源成為一個趨勢的時代,對比其他行業來說,我們在使用這些工具的同時,還可以看到打造這些工具的開發者是如何思考問題、解決問題的。這個學習過程可以讓我們打開眼界,也可以讓我們在面對未知領域時有自信去探索。
如今,很多優秀的編程思想都會被各個平臺吸收,比如約定優于配置、函數式編程、響應式編程,以及以注解方式為代表的元數據編程模型等。Java這么成熟的平臺也在不斷地吸收新的元素,讓自己更“酷”一些:Java 1.5引入了注解,Java 8引入了Collectors、Stream等函數式編程的元素。而一個好的框架也一定會得到多個平臺、語言的支持,比如響應式編程的框架 Rx,最初只是微軟為 .Net 平臺開發的一套框架,但現在已經可以用18種編程語言實現了。
很多時候,隨著接觸的技術面的拓寬,你會發現在一個陌生平臺或框架中,有太多令你會心一笑的東西,因為理念是相通的。在Angular中Interceptor的概念和Spring中Interceptor的概念如出一轍。如果你熟悉RxJS,那么對于Spring Reactor就很快可以使用了,這是因為背后的思想是一樣的。所以說,隨著你見識的提高,對于新知識的掌握速度也會越來越快。

本書涉及很多平臺、框架和類庫等,主要有前端使用的 Angular,后端使用的 Spring Boot 框架、Spring Security 安全框架,數據庫涉及MongoDB、Elasticsearch 和 Redis。此外,還會學習函數式編程、響應式編程(RxJS)、Redux 等理念,Swagger、JaVers 等工具及 Rest、WebSocket、微服務等概念。
但一本書是無法深入這些技術細節的,這也不是筆者的目標。這本書想做的是希望幫助讀者開啟一扇門,讀者讀完本書后,如果覺得某個自己沒有接觸過的框架也不是那么可怕了,那么筆者的目的就達到了。不再對某個領域望而卻步,其實就為你拓開了一片新天地。行萬里路,讀萬卷書,這個道理在技術領域也是一樣的,各種平臺、框架、語言就像是路上的各種自然景觀或人文景觀,筆者愿意和你一起領略這多彩多姿的景色、升華自己的思想。
說句實話,雖然本書名字中有“全棧”,但是筆者以為“全棧”這個詞還是有失偏頗的,給人的感覺好像樣樣通、樣樣松。確實,如果只是每方面都涉獵一些,確實無法做到各方面都精通,在某一個領域成為專家需要堅持不懈地進行學習和總結。但是任何一個領域學到一定程度時,就會發現在其他平臺或編程語言上有類似的理念和思想,這些是相通的,已經超越語言和平臺了。而這些恰恰又是在某個領域繼續深入需要的一個臺階,持續學習的一個必要因素是不懼新的知識,而全棧學習就是要穿越這扇門,本書的目的就是想和你一起穿越這扇門。

作 者
內容簡介:

本書涉及很多平臺、框架和類庫等,主要有前端使用的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 CLI 17
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 布局控件:Sidenav 57
2.2.3 Flex 布局和 Angular Flex-layout 60
2.2.4 封裝 Header/Footer/Sidebar 62
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 安裝 Docker 84
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 構造 Controller 112
3.2.4 啟動服務 113
3.2.5 測試 API 115
3.3 MongoDB 支撐的 API 116
3.3.1 什么是 NoSQL 116
3.3.2 MongoDB 的集成 119
3.3.3 HATEOAS 124
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 為什么要使用 Rx 177
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章 構建后端API 205
5.1 HyperMedia API 與傳統 API 205
5.1.1 領域對象 205
5.1.2 API的可見控制 211
5.1.3 傳統的 API 實現模式 218
5.2 Spring Data 中的查詢 221
5.2.1 基礎概念——Repository 221
5.2.2 查詢方式 223
5.2.3 復雜類型查詢 226
5.2.4 自定義查詢 228
5.2.5 自定義 Repository 229
5.3 Controller 的構建 230
5.3.1 改造 TaskRepo 和 UserRepo 230
5.3.2 實現 Controller 231
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 為什么要保護 API 256
5.4.2 什么是JWT 256
5.4.3 JWT的生成和解析 259
5.4.4 權限的設計 260
5.4.5 使用 Spring Security 規劃角色安全 261
5.4.6 在 Spring Boot 中啟用 Spring Security 265
5.4.7 改造用戶對象 266
5.4.8 構建 JWT token 工具類 268
5.4.9 如何檢查任何請求的授權信息 272
5.4.10 得到用戶信息 275
5.4.11 配置 Spring Security 277
5.4.12 使用 JWT 進行 API 訪問 292
5.5 跨域和 API 文檔 305
5.5.1 跨域解決方案——CORS 305
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 在前端服務中使用 HttpClient 327
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 實現一個簡單的 HttpInterceptor 342
6.3.2 鑒權HttpInterceptor 343
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 Route 354
6.5 安全守衛 355
6.5.1 激活守衛 356
6.5.2 激活子路由守衛 357
6.5.3 加載守衛 358
6.5.4 退出守衛 359
6.5.5 數據預獲取守衛 359
第7章 后端不只是API 361
7.1 緩存 361
7.1.1 配置 Cache 362
7.1.2 常用的緩存注解 364
7.1.3 測試緩存是否生效 366
7.2 Redis 作為緩存框架 368
7.2.1 Redis 的安裝配置 369
7.2.2 在 Spring Boot 中集成 Redis 370
7.2.3 Redisson 373
7.3 使用 ElasticSearch 提升搜索性能 375
7.3.1 配置 375
7.3.2 構建用戶查詢 API 379
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 何時使用 WebSocket 403
7.5.3 STOMP 403
7.5.4 WebSocket 配置 404
7.5.5 WebScoket 安全 406
7.5.6 建立一個實時消息 Controller 409
7.5.7 測試 WebSocket 409
7.6 Spring Boot 的自動化測試 411
第8章 前端的工程化 422
8.1 使用 Redux 管理狀態 423
8.1.1 何時需要使用 Redux 423
8.1.2 Redux 的核心概念 424
8.1.3 在 Angular 中使用 Redux 429
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 Admin 473
9.3.2 路由服務 478
9.4 微服務的遠程調用 485
9.4.1 Feign Client 485
9.4.2 負載均衡 490
附錄A 常見云服務使用問題匯總 492
序: