CSR,英文全称 Client-side Rendering,中文翻译为 客户端渲染,传统 React的使用方式就是客户端渲染。

  1. 浏览器首先下载一个非常小的 html 和渲染所需要的 JavaScript
  2. JavaScript 中执行发送请求、获取数据、更新 DOM 和渲染页面等操作
  3. 缺点是速度不够快

在下载、解析、执行 Javascript 以及请求数据没有返回前,页面不会完全呈现。

理想用例

  • 需要立即反馈的页面元素用户交互,JavaScript可以比等待服务器往返在SSR中提供更快的响应。
  • 具有实时数据的管理仪表板,例如Vercel Analytics中的图表
  • 初次加载后的持续后台任务,例如像Notion这样的应用程序,用户编写时将内容同步回服务器

优点

  • 高度互动的用户体验
  • 无缝的应用状态过渡
  • 与外部数据的实时互动

实现注意事项

  • 由于JavaScript包需要下载才能启动fetch,初始加载可能较慢
  • 优化核心Web Vitals可能具有挑战性
  • 需要仔细的客户端状态管理

最佳实践

  • 依赖Next.js代码分割以减少初始包大小
  • 对于初始加载使用服务器端渲染,然后进行水合以实现互动性(这有助于最大内容绘制)