深入指南
路由

Angular 的渲染策略

本指南協助你在 Angular 應用程式的不同部分,選擇合適的渲染策略。

什麼是渲染策略?

渲染策略決定了你的 Angular 應用程式的 HTML 內容在何時、何地生成。每種策略在初始頁面載入效能、互動性、SEO 能力與伺服器資源使用量之間,都有不同的取捨。

Angular 支援三種主要的渲染策略:

  • 用戶端渲染(CSR):內容完全在瀏覽器中渲染
  • 靜態網站生成(SSG/預先渲染):內容在建置時期預先渲染
  • 伺服器端渲染(SSR):內容會在某個路由初次請求時,在伺服器上渲染

用戶端渲染(CSR)

CSR 是 Angular 的預設做法。內容會在 JavaScript 載入後,完全在瀏覽器中渲染。

何時使用 CSR

✅ 它很適合用於:

  • 互動式應用程式(儀表板、管理介面)
  • 即時應用程式
  • SEO 不重要的內部工具
  • 具有複雜用戶端狀態的單頁應用程式

❌ 在下列情況下,盡可能考慮避免使用:

  • 需要 SEO 的公開內容
  • 初始載入效能非常關鍵的頁面

CSR 的取捨

面向 影響
SEO 不佳:內容在 JavaScript 執行之前,爬蟲無法看見
初始載入 較慢:必須先下載並執行 JavaScript
互動性 載入完成後立即可互動
伺服器需求 極低,僅需一些基本設定
複雜度 最簡單,因為只需要最少的設定即可運作

靜態網站生成(SSG/預先渲染)

SSG 會在建置時期預先渲染頁面,將其產出為靜態 HTML 檔案。伺服器會在初始頁面載入時,傳送已預先建置好的 HTML 內容。水合(hydration)完成後,你的應用程式便會像傳統的 SPA 一樣,完全在瀏覽器中執行,後續的導覽、路由變更與 API 呼叫,全都在用戶端進行,不需要伺服器進行渲染。

何時使用 SSG

✅ 它很適合用於:

  • 行銷頁面與到達頁面
  • 部落格文章與文件
  • 內容穩定的產品目錄
  • 不會依使用者而有所不同的內容

❌ 在下列情況下,盡可能考慮避免使用:

  • 專屬於特定使用者的內容
  • 經常變動的資料
  • 即時資訊

SSG 的取捨

面向 影響
SEO 極佳:可以立即取得完整的 HTML
初始載入 最快:使用預先生成的 HTML
互動性 需要等到水合完成後
伺服器需求 供應內容時不需要伺服器(非常適合搭配 CDN)
建置時間 較長:需要預先生成所有頁面
內容更新 需要重新建置並重新部署

📖 實作方式:請參閱 SSR 指南中的自訂建置時期的預先渲染。

伺服器端渲染(SSR)

SSR 會在伺服器端為某個路由的初次請求生成 HTML,提供兼顧動態內容與良好 SEO 的效果。伺服器會渲染 HTML,並將其傳送給用戶端。

一旦用戶端把頁面渲染出來,Angular 就會對應用程式進行水合,之後應用程式便會像傳統的 SPA 一樣,完全在瀏覽器中執行,後續的導覽、路由變更與 API 呼叫,全都在用戶端進行,不再需要額外的伺服器渲染。

何時使用 SSR

✅ 它很適合用於:

  • 電子商務產品頁面(動態價格與庫存)
  • 新聞網站與社群媒體資訊流
  • 經常變動的個人化內容

❌ 在下列情況下,盡可能考慮避免使用:

  • 靜態內容(改用 SSG)
  • 伺服器成本是考量因素時

SSR 的取捨

面向 影響
SEO 極佳:為爬蟲提供完整的 HTML
初始載入 快速:內容立即可見
互動性 會延遲到水合完成為止
伺服器需求 需要伺服器
個人化 可以完整存取使用者的上下文
伺服器成本 較高:會在某個路由初次被請求時進行渲染

📖 實作方式:請參閱 SSR 指南中的伺服器路由與撰寫與伺服器相容的元件。

選擇正確的策略

決策矩陣

如果你的需求是… 請使用這個策略 原因
需要 SEO 與靜態內容 SSG 預先渲染的 HTML,載入速度最快
需要 SEO 與動態內容 SSR 能在某個路由初次被請求時提供最新內容
不需要 SEO 且重視互動性 CSR 最簡單,不需要伺服器
混合式需求 混合式(Hybrid) 不同的路由可以使用不同的策略

透過水合讓 SSR/SSG 擁有互動性

當使用 SSR 或 SSG 時,Angular 會把在伺服器上渲染好的 HTML 進行「水合」,使其能夠互動。

可用的策略包括:

  • 全量水合:整個應用程式一次全部變成可互動(這是預設做法)
  • 漸進式水合:應用程式的各個部分,依需要逐漸變成可互動(效能更佳)
  • 事件重播:在水合完成之前,先把使用者的點選動作捕捉下來

📖 了解更多:

後續步驟