Week 09 · Day 07 — 第九週總複習:效能優化

學習目標

  • 回顧變更偵測、懶載入、記憶體管理
  • 能系統性優化 Angular 應用
  • 完成並通過本週作業

重點速覽

  • Change Detection:Default(全樹檢查) vs OnPush(只檢查特定時機)
  • OnPush 觸發:@Input 新參考值、元件事件、markForCheck()、async pipe
  • trackBy:列表只重建變動項目
  • 懶載入loadChildren: () => import(...) → 切割 chunk
  • 預載入preloadingStrategy(全部 / 選擇性)
  • 記憶體takeUntil(destroy$) + ngOnDestroy 清理、async pipe 自動退訂

自我測驗

  1. OnPush 會在哪些時機重新檢查?
  2. trackBy 解決什麼問題?
  3. loadChildren 與一般 component: 路由差別?
  4. takeUntil(this.destroy$) 在何時結束訂閱?
答案 1. @Input 新參考、元件事件、markForCheck()、async pipe 2. 識別列表項目,只重建變動的項目 3. 動態 import 模組做懶載入,不是靜態載入元件 4. destroy$ 被 next/complete 時(通常在 ngOnDestroy)

作業

第九週作業(README) - [ ] 使用 OnPush 策略優化元件 ✅ - [ ] 實作路由懶載入 ✅ - [ ] 清理訂閱避免記憶體洩漏 ✅

實作檢核 - [ ] 列表加 trackBy,只重建變動項目 - [ ] 功能模組走 lazy loading,建置後有獨立 chunk - [ ] 所有訂閱都有清理(async 或 takeUntil)

總結

你的應用現在更快、更省記憶體。下一週確保它正確——測試。