news 2026/4/15 23:05:19

进阶篇二 Nuxt4 渲染模式:SSR/SSG/CSR 怎么选

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
进阶篇二 Nuxt4 渲染模式:SSR/SSG/CSR 怎么选

文章目录

    • 一、四种渲染模式
      • 1. SSR(服务端渲染)
      • 2. SSG(静态生成)
      • 3. CSR(客户端渲染)
      • 4. SWR(增量静态生成)
    • 二、Nuxt 默认模式
    • 三、全局关闭 SSR
    • 四、页面级渲染控制
    • 五、混合渲染(Hybrid Rendering)
      • ISR(增量静态生成)
    • 六、预渲染
    • 七、按场景选择
    • 八、性能对比
    • 九、动态切换
    • 十、部署选择
    • 十一、调试技巧
    • 总结

Nuxt 4 支持多种渲染模式:SSR、SSG、CSR、混合渲染……每种模式都有适用场景。选对了事半功倍,选错了后患无穷。今天来分析各种渲染模式的特点和使用场景。

一、四种渲染模式

1. SSR(服务端渲染)

用户请求 → 服务器渲染 HTML → 返回完整页面

特点:

  • 每次请求都在服务器渲染
  • 首屏快、SEO 好
  • 服务器压力大

适用:动态内容、个性化页面

2. SSG(静态生成)

构建时 → 生成静态 HTML → 部署到 CDN 用户请求 → CDN 直接返回

特点:

  • 构建时生成,请求时直接返回
  • 极快(CDN 边缘缓存)
  • 内容更新需要重新构建

适用:博客、文档、营销页

3. CSR(客户端渲染)

用户请求 → 返回空 HTML → JS 渲染

特点:

  • 服务器压力小
  • 首屏慢、SEO 差
  • 适合交互复杂的应用

适用:后台管理、工具应用

4. SWR(增量静态生成)

首次请求 → 返回缓存 同时 → 后台更新缓存 下次请求 → 返回新数据

特点:

  • 结合 SSR 和 SSG 的优点
  • 响应快 + 数据新鲜
  • Nuxt 默认支持

二、Nuxt 默认模式

Nuxt 默认是 SSR + SWR:

// nuxt.config.tsexportdefaultdefineNuxtConfig({// 默认就是 SSRssr:true})

useFetch获取的数据会被缓存:

<script setup lang="ts"> // 首次请求:服务器获取 // 后续请求:使用缓存 const { data } = await useFetch('/api/articles') </script>

三、全局关闭 SSR

如果不需要 SSR,可以全局关闭:

exportdefaultdefineNuxtConfig({ssr:false// 变成 SPA})

适用场景:

  • 后台管理系统
  • 登录后才能访问的应用
  • 不需要 SEO 的工具应用

四、页面级渲染控制

Nuxt 支持页面级别控制渲染模式:

<script setup lang="ts"> // 这个页面只用 CSR definePageMeta({ ssr: false }) </script>

典型场景:后台管理 + 营销页面混合

pages/ ├── index.vue # SSR(首页,需要 SEO) ├── about.vue # SSR(关于页,需要 SEO) └── admin/ ├── index.vue # CSR(后台管理) └── users.vue # CSR(后台管理)
<!-- pages/admin/index.vue --> <script setup lang="ts"> definePageMeta({ ssr: false, layout: 'admin' }) </script>

五、混合渲染(Hybrid Rendering)

Nuxt 4 的 Nitro 支持路由级别的渲染规则:

// nuxt.config.tsexportdefaultdefineNuxtConfig({routeRules:{// 首页:静态生成,每小时更新'/':{isr:3600},// 博客文章:静态生成'/blog/**':{isr:true},// API:不缓存'/api/**':{cache:false},// 管理后台:SPA'/admin/**':{ssr:false},// 旧页面重定向'/old-page':{redirect:'/new-page'}}})

ISR(增量静态生成)

routeRules:{'/blog/**':{isr:true}// 永久缓存,直到手动清除'/blog/**':{isr:3600}// 缓存 1 小时'/blog/**':{isr:false}// 禁用 ISR}

ISR 触发更新的方式:

// 清除缓存,触发重新生成await$fetch('/api/__nuxt_isr__/blog/my-article')

六、预渲染

构建时生成静态页面:

exportdefaultdefineNuxtConfig({nitro:{prerender:{routes:['/','/about','/contact'],crawlLinks:true// 自动发现链接}}})

适合:

  • 内容固定的页面
  • 需要极致性能的场景
  • 部署到静态托管

七、按场景选择

场景推荐模式配置
企业官网SSGrouteRules: { '/**': { isr: true } }
博客SSG + ISRrouteRules: { '/blog/**': { isr: 3600 } }
电商首页SSR + 缓存默认 SSR,短期缓存
商品详情ISR缓存 + 库存实时查询
后台管理CSRssr: false
用户中心CSRssr: false
搜索结果SSR每次请求渲染

八、性能对比

以博客为例:

模式TTFB服务器压力更新延迟
SSR200ms
SSG10ms需重新部署
ISR10ms可控
CSR500ms+

TTFB:Time To First Byte,首字节时间

九、动态切换

根据请求特征动态选择:

// server/middleware/dynamic-render.tsexportdefaultdefineEventHandler((event)=>{constua=getHeader(event,'user-agent')||''// 爬虫用 SSRif(/bot|spider/i.test(ua)){event.context.ssr=true}// 已登录用户用 CSRconsttoken=getCookie(event,'token')if(token){event.context.ssr=false}})

十、部署选择

渲染模式部署方式
SSRNode.js 服务器
SSG静态托管(Vercel、Netlify、OSS)
CSR静态托管
ISRNode.js 服务器 + 缓存
混合Edge 函数 + 静态托管

十一、调试技巧

查看当前渲染模式:

<script setup lang="ts"> onMounted(() => { console.log('渲染模式:', useNuxtApp().ssrContext ? 'SSR' : 'CSR') }) </script>

检查缓存状态:

// 查看 Nitro 缓存conststorage=useStorage()constcached=awaitstorage.getItem('nitro:routes:/blog')

总结

渲染模式选择指南:

需求选择
SEO + 动态内容SSR
SEO + 静态内容SSG/ISR
无 SEO + 交互多CSR
性能 + 实时ISR
混合需求混合渲染

记住:没有银弹,按需选择。大多数项目用 SSR + ISR 就够了。

下一篇聊聊 Nitro 引擎,了解 Nuxt 服务端的核心技术。

相关文章

入门篇三:Nuxt4组件自动导入:写代码少敲一半字

入门篇二:Nuxt 4路由自动生成:告别手动配置路由的日子

延伸阅读

nuxt4完整系列,持续更新中。。,欢迎来逛逛


内容有帮助?点赞、收藏、关注三连!评论区等你 💪

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 22:53:28

「码动四季·开源同行」python语言:流程控制

一、运算方式1.数学运算既然我们编程的目的是为了控制计算机能够像人脑一样工作&#xff0c;那么人脑能做什么&#xff0c;就需要程序中有相应的机制去模拟。人脑无非是数学运算和逻辑运算&#xff0c;对于数学运算就是加减乘除&#xff0c;很简单&#xff0c;我们先来看一下。…

作者头像 李华
网站建设 2026/4/15 22:51:31

Claude Code 高效使用指南:常用指令、快捷键与实战技巧

Claude Code 是当前最受欢迎的AI编程助手之一&#xff0c;它将Claude的强大语言理解能力与代码操作能力完美结合&#xff0c;为开发者提供了一个全新的编程范式。与传统的代码补全工具不同&#xff0c;Claude Code 采用"代理式编程"模式&#xff0c;能够理解整个项目…

作者头像 李华