Angular 高級編程(第3版)( 簡體 字) | |
作者:[美]亞當·弗雷曼(Adam Freeman) 著 睢丹 譯 | 類別:1. -> 程式設計 -> 網路編程 -> AngularJS |
出版社:清華大學出版社 | 3dWoo書號: 51403 詢問書籍請說出此書號! 有庫存 NT售價: 690 元 |
出版日:6/1/2019 | |
頁數:530 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302529170 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第Ⅰ部分Angular基礎知識
第1章準備工作3 1.1需要了解什么3 1.2本書結構3 1.2.1第Ⅰ部分:Angular基礎知識3 1.2.2第Ⅱ部分:Angular詳解3 1.2.3第Ⅲ部分:Angular高級功能3 1.3大量示例4 1.4獲取示例代碼5 1.5如何搭建開發環境5 1.6聯系作者5 1.7本章小結5 第2章第一個Angular應用程序7 2.1準備開發環境7 2.1.1安裝Node.js7 2.1.2安裝angular-cli包8 2.1.3安裝Git8 2.1.4安裝編輯器8 2.1.5安裝瀏覽器9 2.2創建并準備項目9 2.2.1創建項目9 2.2.2添加BootstrapCSS包9 2.2.3啟動開發工具10 2.2.4編輯HTML文件10 2.3向項目中添加Angular功能12 2.3.1準備HTML文件12 2.3.2創建數據模型12 2.3.3創建模板14 2.3.4準備組件14 2.3.5將應用程序組合起來16 2.4向示例應用程序中添加功能17 2.4.1添加待辦事項表格17 2.4.2創建雙向數據綁定19 2.4.3添加待辦事項21 2.5本章小結23 第3章將Angular放在上下文中25 3.1理解Angular的強項25 3.1.1往返式應用程序和單頁式應用程序25 3.1.2Angular與jQuery的比較26 3.2比較Angular、React和Vue.js27 3.3理解MVC模式27 3.3.1理解模型28 3.3.2理解控制器/組件29 3.3.3理解視圖/模板30 3.4理解RESTful服務30 3.5常見的設計缺陷31 3.5.1將邏輯放錯地方31 3.5.2數據存儲采用的數據格式32 3.5.3足夠的知識足以制造麻煩32 3.6本章小結32 第4章HTML和CSS入門33 4.1準備示例項目33 4.2理解HTML34 4.2.1理解空元素35 4.2.2理解屬性35 4.2.3應用無值屬性35 4.2.4在屬性中引用字面量35 4.2.5理解元素內容36 4.2.6理解文檔結構36 4.3理解Bootstrap37 4.3.1應用基本的Bootstrap類37 4.3.2使用Bootstrap樣式化表格40 4.3.3使用Bootstrap創建表單41 4.3.4使用Bootstrap創建網格42 4.4本章小結46 第5章JavaScript與TypeScript:第1部分47 5.1準備示例項目48 5.2使用語句49 5.3定義和使用函數50 5.3.1定義帶參數的函數51 5.3.2定義返回結果的函數52 5.3.3將函數用作其他函數的實參52 5.4使用變量和類型53 5.4.1使用變量閉包54 5.4.2使用基本數據類型54 5.5使用JavaScript操作符56 5.5.1使用條件語句56 5.5.2相等操作符和恒等操作符57 5.5.3顯式類型轉換58 5.6處理數組59 5.6.1使用數組字面量59 5.6.2數組內容的讀取和修改59 5.6.3遍歷數組內容60 5.6.4spread操作符60 5.6.5使用內置數組方法61 5.7本章小結62 第6章JavaScript與TypeScript:第2部分63 6.1準備示例項目63 6.2使用對象63 6.2.1使用對象字面量64 6.2.2將函數用作方法64 6.2.3定義類65 6.3處理JavaScript模塊67 6.4有用的TypeScript特性70 6.4.1使用類型注解70 6.4.2使用元組74 6.4.3使用可索引類型74 6.4.4使用訪問修飾符74 6.5本章小結75 第7章SportsStore:一個真實的應用程序77 7.1準備項目77 7.1.1安裝額外的NPM軟件包77 7.1.2準備RESTfulWeb服務78 7.1.3準備HTML文件80 7.1.4創建文件夾結構80 7.1.5運行示例應用程序80 7.1.6啟動RESTfulWeb服務81 7.2準備Angular項目功能81 7.2.1更新根組件81 7.2.2更新根模塊82 7.2.3檢查引導文件82 7.3啟動數據模型83 7.3.1創建模型類83 7.3.2創建虛擬數據源83 7.3.3創建模型存儲庫84 7.3.4創建功能模塊85 7.4啟動商店85 7.4.1創建Store組件和模板85 7.4.2創建商店功能模塊86 7.4.3更新根組件和根模塊87 7.5添加商店功能:產品詳情88 7.5.1顯示產品詳情88 7.5.2添加類別選擇89 7.5.3添加產品分頁功能90 7.5.4創建自定義指令92 7.6本章小結95 第8章SportsStore:訂單和結賬97 8.1準備示例應用程序97 8.2創建購物車97 8.2.1創建購物車模型97 8.2.2創建購物車概覽組件98 8.2.3將購物車集成到商店中100 8.3添加URL路由102 8.3.1創建購物車詳情和結賬組件102 8.3.2創建和應用路由配置103 8.3.3應用程序導航104 8.3.4路由守衛106 8.4完成購物車詳情功能107 8.5處理訂單109 8.5.1擴展模型109 8.5.2收集訂單詳情111 8.6使用RESTfulWeb服務114 8.7本章小結115 第9章SportsStore:管理117 9.1準備示例應用程序117 9.1.1創建模塊117 9.1.2配置URL路由系統119 9.1.3導航到管理URL120 9.2實現身份驗證121 9.2.1理解身份驗證系統121 9.2.2擴展數據源122 9.2.3創建身份驗證服務122 9.2.4啟用身份驗證123 9.3擴展數據源和存儲庫125 9.4創建管理功能結構128 9.4.1創建占位符組件128 9.4.2準備常用內容和功能模塊129 9.4.3實現產品功能130 9.4.4實現訂單功能133 9.5本章小結135 第10章SportsStore:漸進式功能和部署137 10.1準備示例應用程序137 10.2添加漸進式特性137 10.2.1安裝PWA包137 10.2.2緩存數據URL137 10.2.3響應對連接的更改138 10.3為部署準備應用程序140 10.3.1創建數據文件140 10.3.2創建服務器140 10.3.3更改存儲庫類中的Web服務URL142 10.4構建和測試應用程序142 10.5將SportsStore應用程序容器化144 10.5.1安裝Docker144 10.5.2準備應用程序144 10.5.3創建Docker容器144 10.5.4運行應用程序145 10.6本章小結146 第Ⅱ部分Angular詳解 第11章創建Angular項目149 11.1創建新的Angular項目149 11.2了解項目結構150 11.2.1了解src文件夾151 11.2.2了解包文件夾152 11.3使用開發工具154 11.3.1了解開發HTTP服務器155 11.3.2了解熱模型替換155 11.3.3使用linter156 11.4理解Angular應用程序是如何工作的158 11.4.1理解HTML文檔158 11.4.2理解應用程序引導158 11.4.3理解Angular根模塊159 11.4.4理解Angular組件160 11.4.5理解內容顯示160 11.5在Angular項目中開始開發161 11.5.1添加BootstrapCSS框架161 11.5.2創建數據模型161 11.5.3創建模板和根組件164 11.5.4配置根Angular模塊165 11.6本章小結165 第12章使用數據綁定167 12.1準備示例項目167 12.2理解單向數據綁定168 12.2.1理解綁定目標169 12.2.2理解表達式170 12.2.3理解括號171 12.2.4理解宿主元素171 12.3使用標準屬性和屬性綁定172 12.3.1使用標準屬性綁定172 12.3.2使用字符串插入綁定173 12.3.3使用元素屬性綁定174 12.4設置CSS類和樣式174 12.4.1使用類綁定175 12.4.2使用樣式綁定178 12.5更新應用程序的數據180 12.6本章小結182 第13章使用內置指令183 13.1準備示例項目183 13.2使用內置指令185 13.2.1使用ngIf指令185 13.2.2使用ngSwitch指令187 13.2.3使用ngFor指令189 13.2.4使用ngTemplateOutlet指令195 13.3理解單向數據綁定的限制197 13.3.1使用冪等表達式197 13.3.2理解表達式上下文199 13.4本章小結201 第14章使用事件和表單203 14.1準備示例項目203 14.1.1導入表單模塊203 14.1.2準備組件和模板204 14.2使用事件綁定205 14.2.1理解動態定義的屬性206 14.2.2使用事件數據208 14.2.3使用模板引用變量209 14.3使用雙向數據綁定210 14.4處理表單212 14.4.1向示例應用程序添加表單213 14.4.2添加表單數據驗證214 14.4.3驗證整個表單221 14.5使用基于模型的表單226 14.5.1啟用基于模型的表單功能226 14.5.2定義表單模型類226 14.5.3使用模型進行驗證229 14.5.4根據模型生成元素231 14.6創建自定義表單驗證器232 14.7本章小結234 第15章創建屬性指令235 15.1準備示例項目235 15.2創建簡單的屬性指令237 15.3在指令中訪問應用程序數據239 15.3.1讀取宿主元素屬性239 15.3.2創建數據綁定輸入屬性241 15.3.3響應輸入屬性的變化243 15.4創建自定義事件244 15.5創建宿主元素綁定247 15.6在宿主元素上創建雙向綁定248 15.7導出指令用于模板變量250 15.8本章小結251 第16章創建結構型指令253 16.1準備示例項目253 16.2創建簡單的結構型指令254 16.2.1實現結構型指令類255 16.2.2啟用結構型指令257 16.2.3使用結構型指令的簡潔語法258 16.3創建迭代結構型指令259 16.3.1提供額外的上下文數據261 16.3.2使用簡潔的結構語法262 16.3.3處理屬性級數據變更263 16.3.4處理集合級數據變更264 16.4查詢宿主元素內容271 16.4.1查詢多個子內容274 16.4.2接收查詢變更通知275 16.5本章小結276 第17章理解組件277 17.1準備示例項目278 17.2使用組件來組織應用程序278 17.2.1創建新組件279 17.2.2定義模板282 17.2.3完成組件的重組289 17.3使用組件樣式289 17.3.1定義外部組件樣式290 17.3.2使用高級樣式特性291 17.4查詢模板內容296 17.5本章小結298 第18章使用和創建管道299 18.1準備示例項目299 18.2理解管道302 18.3創建一個自定義管道303 18.3.1注冊自定義管道303 18.3.2應用自定義管道304 18.3.3組合管道305 18.3.4創建非純管道306 18.4使用內置管道309 18.4.1格式化數值309 18.4.2格式化貨幣值311 18.4.3格式化百分比313 18.4.4格式化日期314 18.4.5改變字符串大小寫317 18.4.6將數據序列化為JSON數據317 18.4.7將數據數組切片318 18.5本章小結319 第19章使用服務321 19.1準備示例項目321 19.2理解對象分發問題322 19.2.1問題的提出322 19.2.2利用依賴注入將對象作為服務分發326 19.2.3在其他構造塊中聲明依賴330 19.3理解測試隔離問題335 19.4完成服務的融入338 19.4.1更新根組件和模板338 19.4.2更新子組件339 19.5本章小結340 第20章使用服務提供程序341 20.1準備示例項目342 20.2使用服務提供程序343 20.2.1使用類提供程序345 20.2.2使用值提供程序350 20.2.3使用工廠提供程序351 20.2.4使用已有的服務提供程序353 20.3使用本地提供程序354 20.3.1理解單個服務對象的局限性354 20.3.2在組件中創建本地提供程序355 20.3.3理解服務提供程序的替代方案357 20.3.4控制依賴解析360 20.4本章小結361 第21章使用和創建模塊363 21.1準備示例項目363 21.2理解根模塊365 21.2.1理解imports屬性366 21.2.2理解declarations屬性366 21.2.3理解providers屬性367 21.2.4理解bootstrap屬性367 21.3創建功能模塊368 21.3.1創建模型模塊369 21.3.2創建實用工具功能模塊373 21.3.3用組件創建一個功能模塊377 21.4本章小結380 第Ⅲ部分Angular高級功能 第22章創建示例項目383 22.1啟動示例項目383 22.1.1添加和配置BootstrapCSS包383 22.1.2創建項目結構383 22.2創建模型模塊384 22.2.1創建產品數據類型384 22.2.2創建數據源和存儲庫384 22.2.3完成模型模塊385 22.3創建核心模塊385 22.3.1創建共享狀態服務386 22.3.2創建表格組件386 22.3.3創建表單組件387 22.4.4完成核心模塊389 22.4創建消息模塊389 22.4.1創建消息模型和服務389 22.4.2創建組件和模板390 22.4.3完成消息模塊390 22.5完成項目391 22.6本章小結392 第23章使用ReactiveExtensions393 23.1準備示例項目394 23.2理解問題394 23.3使用ReactiveExtensions解決問題396 23.3.1理解Observable396 23.3.2理解Observer398 23.3.3理解Subject399 23.4使用async管道400 23.5擴展應用程序功能模塊402 23.6更進一步404 23.6.1過濾事件404 23.6.2轉換事件405 23.6.3只接收不同的事件407 23.6.4獲取和忽略事件409 23.7本章小結410 第24章生成異步HTTP請求411 24.1準備示例項目411 24.1.1配置模型功能模塊412 24.1.2創建數據文件412 24.1.3更新表單組件413 24.1.4運行示例項目413 24.2理解RESTfulWeb服務414 24.3替換靜態數據源414 24.3.1創建新的數據源服務414 24.3.2配置數據源416 24.3.3使用REST數據源416 24.3.4保存和刪除數據417 24.4加強HTTP請求419 24.5生成跨域請求420 24.6配置請求頭422 24.7處理錯誤424 24.7.1生成用戶可使用的消息425 24.7.2處理錯誤426 24.8本章小結427 第25章路由與導航:第1部分429 25.1準備示例項目429 25.2開始學習路由431 25.2.1創建路由配置431 25.2.2創建路由組件433 25.2.3更新根模塊433 25.2.4完成配置433 25.2.5添加導航鏈接434 25.2.6理解路由的效果436 25.3完成路由實現437 25.3.1在組件中處理路由變化438 25.3.2使用路由參數439 25.3.3在代碼中導航444 25.3.4接收導航事件445 25.3.5刪除事件綁定和支持代碼446 25.4本章小結448 第26章路由與導航:第2部分449 26.1準備示例項目449 26.2使用通配符和重定向454 26.2.1在路由中使用通配符454 26.2.2在路由中使用重定向455 26.3在組件內部導航456 26.3.1響應正在發生的路由變化457 26.3.2為活動路由設置不同樣式的鏈接459 26.3.3修復All按鈕461 26.4創建子路由462 26.4.1創建子路由出口463 26.4.2從子路由訪問參數464 26.5本章小結467 第27章路由與導航:第3部分469 27.1準備示例項目469 27.2守衛路由470 27.2.1使用解析器推遲導航470 27.2.2避免帶有守衛的導航476 27.3動態加載功能模塊484 27.3.1創建一個簡單的功能模塊484 27.3.2動態加載模塊485 27.3.3守衛動態模塊488 27.4指定命名出口490 27.4.1創建附加的出口元素490 27.4.2在使用多個出口的情況下導航491 27.5本章小結493 第28章使用動畫495 28.1準備示例項目496 28.1.1禁用HTTP延遲496 28.1.2簡化表格模板和路由配置496 28.2開始學習Angular動畫498 28.2.1啟用動畫模塊498 28.2.2創建動畫499 28.2.3應用動畫501 28.2.4測試動畫效果503 28.3理解內置的動畫狀態504 28.4理解元素過渡505 28.4.1為內置狀態創建過渡505 28.4.2控制動畫的過渡506 28.5理解動畫樣式組510 28.5.1在可重用的分組中定義公共樣式510 28.5.2使用元素變形511 28.5.3應用CSS框架樣式512 28.6本章小結514 第29章Angular單元測試515 29.1準備示例項目516 29.2創建一個簡單的單元測試517 29.3使用Jasmine完成單元測試518 29.4測試Angular組件519 29.4.1使用TestBed類完成工作519 29.4.2測試數據綁定522 29.4.3測試帶有外部模板的組件523 29.4.4測試組件事件525 29.4.5測試輸出屬性526 29.4.6測試輸入屬性528 29.4.7測試異步操作529 29.5測試Angular指令531 29.6本章小結532 主要內容:
? 深入理解MVC模式的架構 ? 使用Angular創建內容豐富、靈動多變的Web應用客戶端 ? 使用ng工具創建和構建Angular項目 ? 擴展和定制Angular ? 測試Angular項目 新增內容: ? 根據Angular 7的特性和變化做了全面細致的修訂 ? 涵蓋@angular/cli、ng命令行工具和webpack ? 包含用于簡化異步HTTP請求的HttpClient ? 更新了管道和本地化文本的顯示 █ █ █ 譯 者 序 在Web開發領域,一般使用HTML作為前端頁面元素的聲明式語言,使用CSS技術作為展示樣式的描述語言,JavaScript作為業務處理交互的命令式語言。而構建非常復雜的Web應用時,純粹而有限的HTML就顯得非常不足,JavaScript本身也會隨著項目代碼量的膨脹而變得難以維護和管理,研發工期和成本也會隨之難以控制。此時,一般使用類庫(如jQuery、Dojo等)或框架(如Backbone、Ember和ExtJS等)來提升開發效率,縮短項目的工期和降低成本,方便后續的維護和管理。 而AngularJS不僅是一個理念先進的前端開發框架,更是一種端對端的解決方案,已經被用于Google的多款產品中。AngularJS遵從架構設計中的MVC模式,提倡展現、數據和邏輯處理組件的松耦合(類似Flex和WPF)。AngularJS通過指令技術對傳統HTML實現了自然擴展,通過編譯技術實現了數據模型與展現視圖的雙向自動同步,消除了前端開發中繁雜的DOM操作。最后通過模塊化設計解決了JS代碼管理維護和按需加載的問題,提高了廣大前端程序員以及后端程序員的生產效率。而且這種解耦本身,也對前端的自動化測試技術提供了良好的支持。 AngularJS誕生于2009年,由Misko Hevery 和Adam Abrons創建,后為Google所收購。AngularJS有許多特性,最為核心的是:MVVM、模塊化、自動化雙向數據綁定、語義化標簽、依賴注入等。AngularJS 是專門為應用程序設計的 HTML。 Angular 2.0是2014年10月22日在ng-Europe會議上發布的,該版本完全重寫了AngularJS。為避免開發人員的困惑,開發團隊宣布每個框架都應該使用單獨的術語,其中“AngularJS”指的是版本1。x版本和沒有“JS”的“Angular”指的是版本2及更高版本。 Angular 6于2018年5月4日發布。這是一個重要版本,它對底層框架的關注較少,考慮更多的是工具鏈,以及如何使Angular更易于在未來提高效率,如ng update、ng add、Angular Elements、Angular Material + CDK Components、Angular Material Starter Components、CLI Workspaces、Library Support、Tree Shakable Providers、Animations Performance Improvements和RxJS v6。 Angular 7讓Angular變得更出色,為順應現代趨勢增加了比特幣挖掘、虛擬滾動、拖放等功能。 《Angular高級編程(第3版)》分為三個部分,每部分涵蓋一組相關的主題。《Angular高級編程(第3版)》第Ⅰ部分回顧了一些關鍵技術的基本知識,包括HTML、CSS和TypeScript,并展示如何構建第一個Angular應用程序。第Ⅱ部分介紹Angular為構建應用程序提供的構造塊,依次描述所有這些構造塊。深入描述Angular包含的很多內置功能,以及豐富的Angular自定義選項。第Ⅲ部分介紹如何使用高級功能來創建更復雜、可擴展的應用程序。演示如何在Angular應用程序中進行異步HTTP請求,如何使用URL路由在應用程序中導航,以及在應用程序的狀態發生變化時如何使HTML元素具有動畫效果。 《Angular高級編程(第3版)》堪稱Angular領域的里程碑式著作,涵蓋了關于Angular的幾乎所有內容。《Angular高級編程(第3版)》平實、通俗的講解,豐富、翔實的示例,遞進、嚴密的組織,可以讓新手毫無壓力地登堂入室,迅速吸取新一代Web應用開發的精髓。對于具有相關經驗的用戶,《Angular高級編程(第3版)》對Angular概念和技術細節的全面剖析,以及引人入勝、切中肯綮的講解,將幫助讀者徹底掌握這個框架,在自己職業技術修煉之路上更進一步。 這里要感謝清華大學出版社的編輯們,他們為《Angular高級編程(第3版)》的翻譯投入了巨大熱情并付出了很多心血。沒有他們的幫助和鼓勵,《Angular高級編程(第3版)》不可能順利付梓。 對于這本經典之作,譯者本著“誠惶誠恐”的態度,在翻譯過程中力求“信、達、雅”,但是鑒于譯者水平有限,錯誤和失誤在所難免,如有任何意見和建議,請不吝指正。 譯者 |