客户端渲染(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。