Nuxt3踩坑记

1,024 阅读2分钟

公司最近有个官网重构的需求。

旧网站是原生html加上jquery写的,早已落后于时代,所以这次重构打算用上最新最in的Nuxt3来写。

01fd5e7434dca78c576e31c8e3a4ec2124fa0e3c.gif@599w_488h_progressive.webp

一般来说用Nuxt3的原因无非有两个,一是首屏渲染体验,二是SEO。旧项目之前为了SEO,我用express做了个中间层获取数据,拼在html中返回,也算是实现了服务端渲染,但细节可以说是惨不忍睹,故下定决心一定要用上正经的SSR框架。
(其实最主要的原因是有点抗拒写jquery了,vue3真香)

项目启动的方式官网已经比较详细了,这里不多赘述,个人更推荐英文版官网,中文版翻译现在还不完善,特别是nuxt.config.js配置项。

先看看node版本

虽然Nuxt3支持node14,但官方还是推荐我们用最新的18版本,毕竟14后面就不支持了。强调版本的一个原因是我在搭建的过程中遇到过诸如package.json中ESM模式不支持之类的问题,很烦,升级之后就解决了。

省心省力路由配置

默认以pages文件夹为根节点,文件名即路由的path,而且支持动态参数,写起来真的很像静态,不像直接写vue-router那样诸多配置,层层嵌套。还带有丰富的中间件和鉴权功能,非常舒服。

多环境配置和端口

一般项目都带有本地、测试、预发布、正式等环境,通过.env文件可以对对应的环境进行配置,但唯独端口Nuxt3没有给出太自由的配置,在nuxt.config.js中可以通过devServer属性来配置本地环境服务的端口,但正式环境中依然需要使用cross-env来声明端口,不然一直会默认在3000端口输出。不过官网似乎更推荐我们使用pm2来跑服务,通过pm2来进行web服务的配置和管理。

两种部署模式

Nuxt3提供了两种部署模式给我们,一种是generate,这个模式能批量生成静态的html文件,也就是所谓的SSG模式(参考cms等框架),对于一些内容量大且很少改动的页面来说,是最佳的选择,例如搭建新闻网站。另一种是build模式,会生成一个.output文件夹用于搭建一个web服务,也就是SSR模式,优点在于灵活,数据动态获取,适合内容量不大且有交互的网站。

待续...