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 自動退訂
自我測驗
- OnPush 會在哪些時機重新檢查?
trackBy解決什麼問題?loadChildren與一般component:路由差別?takeUntil(this.destroy$)在何時結束訂閱?
答案
1. @Input 新參考、元件事件、markForCheck()、async pipe 2. 識別列表項目,只重建變動的項目 3. 動態 import 模組做懶載入,不是靜態載入元件 4. destroy$ 被 next/complete 時(通常在 ngOnDestroy)作業
第九週作業(README) - [ ] 使用 OnPush 策略優化元件 ✅ - [ ] 實作路由懶載入 ✅ - [ ] 清理訂閱避免記憶體洩漏 ✅
實作檢核 - [ ] 列表加 trackBy,只重建變動項目 - [ ] 功能模組走 lazy loading,建置後有獨立 chunk - [ ] 所有訂閱都有清理(async 或 takeUntil)
總結
你的應用現在更快、更省記憶體。下一週確保它正確——測試。