客户端渲染(CSR)
客户端渲染(CSR)指的是在浏览器中使用 JavaScript 生成 HTML 内容的做法。CSR 与服务器端渲染相对,后者由服务器生成 HTML 内容。这两种技术并不互斥,可以在同一个应用中结合使用。
一个纯 CSR 应用可能会返回如下 HTML 内容:
html
<!doctype html>
<html lang="zh-CN">
<head>
<title>我的应用</title>
<script src="bundle.js"></script>
</head>
<body>
<div id="root"></div>
<noscript>
<p>此应用需要 JavaScript 才能运行。</p>
</noscript>
</body>
</html>
随后,实际的页面内容由 bundle.js 中的 JavaScript 使用 DOM 操作生成。
CSR 的优点包括:
- 交互性:包括路由切换在内的任何页面更新都不需要整页重新加载。这让应用更快、更具响应式。
- 性能:服务器只需要发送初始 HTML 内容和 JavaScript 资源。后续页面更新可以从 API 获取,这可能比获取整页 HTML 更快,也能减轻服务器负载。
SSR 和 CSR 各有性能权衡,可以结合使用以兼顾两者优势。例如,服务器可生成带有空白占位符的页面骨架,客户端再获取额外数据并按需更新页面。
请注意,单页应用并不要求站点必须采用 CSR。现代框架(如 React、Vue 和 Svelte)都可用于构建具备 SSR 能力的 SPA。