客戶端渲染(CSR)

客戶端渲染 (CSR) 指的是在瀏覽器中使用 JavaScript 生成 HTML 內容的做法。CSR 與 伺服器端渲染 相對應,伺服器端渲染是由伺服器生成 HTML 內容。這兩種技術並非互斥,可以在同一個應用程式中一起使用。

純 CSR 應用可能會返回以下 HTML 內容:

html
<!doctype html>
<html lang="en-US">
  <head>
    <title>My App</title>
    <script src="bundle.js"></script>
  </head>
  <body>
    <div id="root"></div>
    <noscript>
      <p>This app requires JavaScript to run.</p>
    </noscript>
  </body>
</html>

然後,實際的頁面內容由 `bundle.js` 中的 JavaScript 生成,並使用 DOM 操作

CSR 的優勢包括:

  • 互動性:任何頁面更新,包括路由跳轉,都不需要完全重新載入頁面。這使得應用程式感覺更快、響應更靈敏。
  • 效能:伺服器只需傳送初始 HTML 內容和 JavaScript 資源。後續的頁面更新可以從 API 獲取,這可能比獲取完整的 HTML 頁面更快,並且能減少伺服器的負載。

SSR 和 CSR 在效能上都有各自的權衡,可以結合使用 SSR 和 CSR 的優勢。例如,伺服器可以生成一個帶有空佔位符的頁面骨架,然後客戶端可以按需獲取額外資料並更新頁面。

請注意,單頁應用程式並不一定需要是 CSR。現代框架,如 ReactVueSvelte,都可以用來構建支援 SSR 功能的 SPA。