渲染策略基础概念
🧩 一、基础概念速览
| 名称 | 全称 | 中文含义 | 渲染位置 | 首屏速度 | SEO友好 | 场景特点 |
|---|---|---|---|---|---|---|
| SPA | Single Page Application | 单页应用 | 客户端 | 慢(需加载JS后渲染) | 差(需额外优化) | 前端逻辑强、页面切换快 |
| CSR | Client-Side Rendering | 客户端渲染 | 浏览器 | 慢(白屏期明显) | 差 | 动态交互、API驱动页面 |
| SSR | Server-Side Rendering | 服务端渲染 | 服务器 | 快(首屏快) | 好 | 动态内容、SEO需求 |
| SSG | Static Site Generation | 静态站点生成 | 构建阶段 | 非常快 | 很好 | 内容少、静态博客、文档类 |
🧠 二、关系与层次理解
可以把它们看作两组概念的组合关系:
┌──────────────┐
│ SPA 应用 │ ←—— 单页应用结构
└──────────────┘
│
┌──────────────┐
│ CSR 客户端渲染│ ←—— 默认SPA的渲染方式
└──────────────┘
┌──────────────┐
│ SSR 服务端渲染│ ←—— SPA的进化方向之一
└──────────────┘
┌──────────────┐
│ SSG 静态生成 │ ←—— SSR 的一种预渲染形式
└──────────────┘
-
SPA 是应用结构:只有一个 HTML,所有内容靠 JS 动态切换视图。
-
CSR / SSR / SSG 是渲染方式:
-
CSR:运行时渲染(在浏览器中)。
-
SSR:请求时渲染(在服务器中)。
-
SSG:构建时渲染(提前生成静态 HTML)。
-
⚙️ 三、工作机制对比
| 阶段 | CSR | SSR | SSG |
|---|---|---|---|
| 构建阶段 | 构建 JS Bundle | 可生成部分模板 | 生成完整 HTML 文件 |
| 用户请求 | 返回空 HTML + JS | 服务器运行 JS 模板生成 HTML | 直接返回静态 HTML |
| 浏览器渲染 | JS 下载后执行再渲染 | HTML 直接展示,再激活 JS | HTML 直接展示,再激活 JS |
| 优点 | 前后端分离简单 | 首屏快,SEO好 | 极快,CDN友好 |
| 缺点 | 首屏慢,SEO差 | 成本高,需Node服务器 | 动态内容需重新构建 |
🔄 四、演化与混合模式
现代框架如 Next.js / Nuxt / Remix / SvelteKit 都支持多种混合渲染:
| 模式 | 含义 | 使用场景 |
|---|---|---|
| CSR + SSR 混合 | 首页 SSR,其余页面 CSR | SEO + 交互并重的产品 |
| SSG + ISR(增量静态再生成) | 静态生成 + 后台自动更新 | 博客、新闻站 |
| SPA + CSR | 完全前端渲染 | Web App 类应用(如Gmail) |
💡 五、类比理解
| 类比对象 | 渲染方式 |
|---|---|
| CSR 像是一本“空白书”,读者拿到后浏览器用脚本填上内容。 | |
| SSR 像是服务器直接“打印好书”再寄给你。 | |
| SSG 像是提前印好成千上万本书,放在CDN上随时分发。 | |
| SPA 像是一本“会变形的书”,翻页时内容在前端动态切换,而不是换一本新书。 |
🧭 六、总结归纳
| 类型 | 代表框架 | 构建工具 |
|---|---|---|
| SPA (CSR) | React / Vue / Angular | Vite / CRA |
| SSR | Next.js / Nuxt | Vite SSR Plugin |
| SSG | Astro / Next.js (Static Export) / Gatsby | Vite / Webpack |
| 混合 | Next.js / Remix / SvelteKit | Vite / Nitro |