由于Vite采用的bundless的dev server方案,且按原生ESM的形式按需为浏览器动态提供源码,也就形成了Vite冷启动迅速,但首屏首次加载慢(加载过程中进行解析、编译等,特别是在首屏需要引入体积大、格式特殊的文件时)的问题。
除此之外,在第一次启动时,如果在首页通过点击等交互操作准备进入到下一个包含新类库依赖的页面时,会出现响应迟缓、页面reload的情况。同样出现这类情况也是因为需要动态加载过程中的额外工作。
目前,对于上述问题的解决方案主要是通过触发冷启动时的预构建来解决:
1. 通过配置依赖优化项 optimizeDeps.include
2. 通过现有的npm包
npm i -D vite-plugin-optimize-persist vite-plugin-package-config
// vite.config.ts import OptimizationPersist from 'vite-plugin-optimize-persist' import PkgConfig from 'vite-plugin-package-config' export default { plugins: [ PkgConfig(), OptimizationPersist() ] }
3. 如果方案2有兼容问题,可以参考其源码,自己编写插件的实现