1、Nuxt3初探:什么是SSR?Nuxt3的核心优势、与Nuxt2的区别、项目初始化
1.1 什么是SSR?
SSR,全称是Server-Side Rendering,服务端渲染。
说白了,就是页面在服务器上组装好,再发给浏览器。
传统的SPA(单页应用)是浏览器拿到一个空壳HTML,然后通过JavaScript去渲染内容。而SSR是服务器直接把完整的HTML扔给浏览器。
我刚开始接触前端时,也觉得SPA挺酷的。但后来做电商项目,发现首屏加载慢得离谱,SEO也完全抓不到内容。嗯,那时候我才意识到SSR的价值。
核心区别一句话:
- SPA:浏览器渲染,白屏时间长,SEO不友好
- SSR:服务器渲染,首屏快,SEO友好
1.2 Nuxt3的核心优势
Nuxt3是Vue生态里最成熟的SSR框架。我个人习惯用它来搭建中大型项目,原因很简单——省心。
- 自动路由:pages目录下的文件自动生成路由,不用手动配置。我在项目中经常遇到路由嵌套的场景,Nuxt3的自动路由配合文件命名规则,简直不要太爽。
- 服务端渲染开箱即用:你只需要写Vue组件,Nuxt3自动处理SSR的复杂逻辑。我曾经在Nuxt2里折腾过SSR配置,改得头皮发麻。Nuxt3直接帮你搞定。
- 静态站点生成(SSG):如果项目不需要实时数据,可以生成纯静态HTML,部署到CDN上,速度快到飞起。
- 自动导入组件:components目录下的组件自动注册,不用手动import。嗯,这个功能我特别喜欢,少写了很多重复代码。
- TypeScript支持:Nuxt3原生支持TypeScript,类型安全,开发体验好。
- Vite构建工具:开发时热更新极快,打包也快。相比Nuxt2的Webpack,简直是降维打击。
我的建议:如果你要做一个内容型网站(博客、文档、电商),直接上Nuxt3。如果是后台管理系统,SPA可能更合适。
1.3 Nuxt3与Nuxt2的区别
很多同学问我,直接从Nuxt2跳到Nuxt3,变化大不大?
说实话,变化挺大的。我列个表格,你一看就明白。
| 对比项 | Nuxt2 | Nuxt3 |
|---|---|---|
| 构建工具 | Webpack | Vite |
| 渲染引擎 | Vue2 | Vue3 |
| 数据获取 | asyncData / fetch | useAsyncData / useFetch |
| 状态管理 | Vuex | Pinia(推荐) |
| TypeScript | 支持有限 | 原生支持 |
| 自动导入 | 部分支持 | 全面支持 |
| 渲染模式 | SSR / SSG | SSR / SSG / SWR / ISR |
为什么会这样?因为Nuxt3完全重写了底层架构。它不再是一个简单的Vue封装,而是基于Vue3的Composition API重新设计的。
我记得有一次把Nuxt2项目迁移到Nuxt3,最大的坑是数据获取方式变了。Nuxt2的asyncData在Nuxt3里变成了useAsyncData,写法完全不同。不过适应之后,发现新API更灵活,也更符合Vue3的哲学。
避坑指南:我曾经在迁移时直接复制Nuxt2的asyncData代码到Nuxt3里,结果页面死活不渲染。后来才发现,Nuxt3的useAsyncData必须在setup函数里调用,而且返回的是响应式数据。
1.4 项目初始化
好了,理论说完了,咱们直接上手。
初始化一个Nuxt3项目,其实就一行命令。
npx nuxi init my-nuxt3-app
如果你用的是pnpm,也可以这样:
pnpm dlx nuxi init my-nuxt3-app
然后进入项目目录,安装依赖:
cd my-nuxt3-app
npm install
# 或者
pnpm install
启动开发服务器:
npm run dev
# 或者
pnpm dev
默认情况下,Nuxt3会启动在 http://localhost:3000。
你打开浏览器,会看到一个默认的Nuxt3欢迎页面。嗯,到这里,你的第一个Nuxt3项目就跑起来了。
小技巧:我个人习惯在初始化时加上 --package-manager 参数,比如 npx nuxi init my-app --package-manager pnpm,这样生成的模板直接就是pnpm的配置,省得后面再改。
1.5 项目结构一览
初始化完成后,你会看到这样的目录结构:
my-nuxt3-app/
├── .nuxt/ # 自动生成的构建文件
├── assets/ # 静态资源(CSS、图片等)
├── components/ # 组件
├── layouts/ # 布局文件
├── middleware/ # 中间件
├── pages/ # 页面文件(自动路由)
├── public/ # 公共静态文件
├── server/ # 服务端API
├── app.vue # 根组件
├── nuxt.config.ts # Nuxt配置文件
└── package.json
你想想看,这个结构是不是很清晰?pages目录放页面,components目录放组件,layouts目录放布局。Nuxt3会自动识别这些目录,帮你处理好路由、组件注册等事情。
我刚开始用Nuxt3时,最惊讶的就是pages目录下的文件自动生成路由。你新建一个 pages/about.vue,访问 /about 就能看到页面。不需要写任何路由配置。
总结一下:
- SSR解决了SPA的首屏慢和SEO问题
- Nuxt3相比Nuxt2,构建工具、渲染引擎、数据获取方式都有重大升级
- 项目初始化只需一行命令,目录结构清晰,上手成本低
下一章,我们会深入pages目录,看看Nuxt3的路由系统到底有多强大。到时候我会分享一些我在项目中遇到的路由坑,保证让你少走弯路。
公众号:蓝海资料掘金营,微信deep3321