| 模式 | 渲染时机 | 是否静态可部署 | SEO | 性能 | 示例 |
|---|---|---|---|---|---|
| CSR | 浏览器加载后渲染 | ✅ | ❌ | 首屏慢 | Vite + React |
| SSR | 每次请求动态渲染 | ❌ | ✅ | 首屏快但需服务器 | Next.js SSR |
| SSG | 构建时预渲染 | ✅ | ✅ | 最快 | Docusaurus / Next.js SSG |
非常好的问题 👍
在现代前端(尤其是 React / Next.js / Docusaurus 等框架)中,CSR、SSR、SSG 是三种常见的页面渲染模式。
它们的主要区别在于:页面的 HTML 是在什么时候、由谁生成的(浏览器还是服务器)。
代表框架:React、Vue(默认模式)、Docusaurus(默认)
核心思想:
👉 首次加载时服务器只返回一个空的 HTML 外壳(带 <div id="root"></div>)和 JS 文件。
👉 浏览器下载 JS 后在客户端执行 React 代码,动态生成 DOM 并渲染页面。
流程:
浏览器请求页面 → 服务器返回空 HTML + JS → 浏览器执行 JS → 渲染出内容
优点:
缺点:
适用场景:
前后端完全分离的 SPA、仪表盘、管理后台。
代表框架:Next.js、Nuxt.js、Remix
核心思想:
👉 页面 HTML 在服务器端由 React 渲染生成,再发送给浏览器。
👉 浏览器收到完整 HTML 后快速展示内容,再“水合(hydrate)”绑定事件。
流程:
浏览器请求页面 → 服务器执行 React 渲染 → 返回完整 HTML → 浏览器展示页面并加载 JS → hydrate 交互
优点:
缺点:
适用场景:
内容动态、需要 SEO 的网站(如博客、新闻、商品页)。
代表框架:Next.js(getStaticProps)、Docusaurus、Gatsby
核心思想:
👉 在 构建阶段(build time) 生成所有 HTML 文件。
👉 部署时直接是静态文件,访问速度极快。
流程:
npm run build → 生成 HTML 文件 → 部署静态文件服务器(如 Vercel、GitHub Pages)
优点:
缺点:
适用场景:
文档网站(如 Docusaurus)、个人博客、产品官网。
| 特性 | CSR | SSR | SSG |
|---|---|---|---|
| 渲染位置 | 浏览器 | 服务器 | 构建阶段 |
| 首屏速度 | 慢(白屏) | 快 | 非常快 |
| SEO 支持 | 差 | 好 | 非常好 |
| 动态内容 | 强 | 强 | 弱 |
| 部署复杂度 | 简单(静态) | 复杂(需 Node 运行) | 简单(静态) |
| 常见场景 | 后台系统、仪表盘 | 电商、博客、门户 | 文档站、官网 |