iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0
Modern Web

Angular:踏上現代英雄之旅系列 第 30

Day 30|完結篇:總結與完賽心得

  • 分享至 

  • xImage
  •  

哈囉,各位邦友們!
今天是鐵人賽的最後一天,也是這系列的的完結篇。
我們把一個 Standalone、Signals、Zoneless 的 Angular 專案從無到有帶上線,也補齊了測試。
今天就在篇把這次的成果一次盤點。

今天要做什麼?

  1. 回顧每一週完成的核心任務
  2. 統整英雄管理系統目前具備的功能
  3. 根據專案現況,列出下一步可以延伸的進階學習主題

一、系列回顧

第一週:現代 Angular 基底(Day 1~Day 7)

  • Day01~Day03 重新建立英雄之旅的動機與專案骨架:ng new 啟動 Standalone 專案、熟悉 imports、拆出 HeroBadge 子元件。
  • Day04~Day05 以 @if@for 取代舊指令,搭配 signals 控制畫面與清單狀態,建立「宣告式模板 + 現代控制流」的寫作節奏。
  • Day06~Day07 把事件處理、signal 狀態與 ngModel 表單整合,完成第一個可互動的 Dashboard。

第二週:應用程式核心功能(Day 8~Day 18)

  • Day08~Day12 建立 HeroService、串接 HttpClient 模擬 API,並用 Observable 處理 loading/error,正式把資料流搬離元件。
  • Day13~Day15 打造完整 CRUD:新增/更新、刪除與錯誤處理,同步強化 UI 的 Loading、Empty、Error 狀態。
  • Day16~Day18 練習 RxJS operators 的即時搜尋、整合 Dashboard 體驗與 NgOptimizedImage,確保互動順暢也顧到效能。

第三週:響應式進階篇(Day 19~Day 26)

  • Day19~Day21 將 Reactive Forms 與 Signals 深度結合,完成英雄表單、表單驗證與服務快取策略。
  • Day22~Day24 把 RxJS 與 Signals 交會點透過 toSignalresource()rxResource() 收斂,並回顧從 NgModule 到 Standalone 的架構演進。
  • Day25~Day26 引入 @defer 延遲載入、整理週次重點成果,讓第二階段的進階技巧全部落地。

部署與上線(Day 27~Day 29)

  • Day27 以 ng build + GitHub Pages 實際部署,熟悉 baseHref、預渲染與自動化流程。
  • Day28 探討 Zoneless 變更檢測,描述 Signals 如何成為沒有 Zone.js 的更新核心。
  • Day29 撰寫 HeroService 與 HeroDetail 的單元測試、Playwright E2E 端對端測試。

二、專案現況盤點

  • 架構:全站以 Standalone 元件 + provideRouter 啟動,ApplicationConfig 集中註冊路由、HTTP、Zoneless 與 SSR。
  • 功能:Dashboard、Heroes 清單、詳細頁、即時搜尋、完整 CRUD、技能 FormArray、錯誤與 Loading 視覺狀態全部到位。
  • 狀態管理:HeroService 使用 signals 快取 + computed Map,加上 rxResource() 控制搜尋、effect 同步路由與表單,使資料流保持單一事實來源。
  • 效能:@defer 延遲載入次要板塊、NgOptimizedImage 做圖像最佳化、Zoneless 確保高頻互動的更新精準。
  • 部署:ng build、GitHub Pages、自動化 workflow 設定可直接複製到團隊專案。
  • 測試:Jasmine/Karma 覆蓋服務與元件邏輯,Playwright 驗證核心操作流程,確保重構程式能正常執行。

三、上線後的持續優化清單

  1. 資料來源升級:把 in-memory API 替換成真實後端或 REST/GraphQL 服務,延伸 Day12~Day14 的 HTTP 邏輯到完整認證與權限控管。
  2. 觀測與守護:延續 Day27 部署成果,串接 GA4、Application Insights 或 Sentry,建立錯誤回報與使用者行為追蹤。
  3. 測試矩陣擴充:在 Day29 的基礎上補上 HeroList 元件互動測試、表單驗證案例,並導入 CI 執行 lint/test/e2e。
  4. TEAM READY:若要多人協作,可建立專案樣板、Storybook/Chromatic 作為設計溝通橋梁,並導入代碼規範(ESLint + Prettier)。

四、未來學習地圖建議

  • 進階狀態管理:延續 Signals 基礎,研究 signalStoreComponentStore 或整合 NgRx,應付大型專案資料一致性。
  • SSR 與多入口部署:把 Day27 的 static 部署升級為 SSR(例如 Angular Universal + Cloudflare Pages),處理登入、SEO 與快取策略。
  • 微前端與設計系統:根據 Day24 所談 Standalone 架構,把專案拆成多個可重複使用的 libraries,組成 Design System。
  • Web 性能深潛:針對 Day28 的 Zoneless 與 Day18 的最佳化,深入瀏覽器效能分析(Performance panel、Lighthouse、Web Vitals)。

完賽心得

正式結束了今年的 iThome 鐵人賽

把想法變成一個能部署上線、具備現代 Angular 技術堆疊的作品
從 Standalone、Signals、RxJS,到部署、Zoneless、測試
對於 Angular 我還有許多需要補足的地方
文章內很多地方都還能更加優化

非常感謝一路同行的邦友!
每天的瀏覽次數都是一個幫助我持續發文的動力
歡迎回饋心得到留言區,這系列我會維護到我覺得這是一個合格的作品為止
更多資訊可以查看我的Repo


上一篇
Day 29|測試:單元測試與 E2E 測試
系列文
Angular:踏上現代英雄之旅30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言