Vite 打包后首屏加载太慢,怎么优化?
我用 Vite + Vue3 开发了一个项目,本地开发时很快,但 build 之后首屏加载特别慢,Lighthouse 评分很低。我已经试过开启 brotli 压缩和分包,但效果不明显。
是不是我的组件没做懒加载?比如下面这个路由写法是不是有问题?
<script setup>
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/dashboard',
component: () => import('@/views/Dashboard.vue')
}
]
const router = createRouter({ history: createWebHistory(), routes })
</script>
首屏慢通常是因为没做代码分割后的预加载,或者打包产物太大没处理好。
先看几个关键点:
第一个,Vite 默认分包但不会预加载,你可以在
vite.config.js里加个manualChunks或者用build.rollupOptions显式分包,比如这样改一下就行:第二个,首屏关键资源建议用
prefetch或preload,比如你在 HTML 里加个<link rel="prefetch" href="/assets/xxx.js">,或者在路由里用meta: { prefetch: true }配合插件自动加。第三个,检查打包产物大小,用
vite-bundle-visualizer插件跑一下,看看哪个依赖占了大头,比如lodash、echarts这类大包,换成lodash-es或按需引入。还有个常见坑:别在入口文件里直接
import大库,比如import _ from 'lodash',这种会整个打进去,改成import debounce from 'lodash/debounce'就行。最后,如果用了 CDN,记得开启 HTTP2 + gzip + brotli,nginx 里 brotli 要装模块,不是光配个
gzip on就完事。你先按这些排查一遍,Lighthouse 能提 20 分以上。