客户端渲染(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。现代框架,如 React、Vue 和 Svelte,都可以用来构建支持 SSR 功能的 SPA。