vite分包策略

项目问题

1. js包之间的依赖问题

分析network加载顺序可知, 页面js依赖preview.js,previw.js执行时间过长,还需要等待main.js执行完之后再加载。考虑把previw.js跟main.js合并,将preview.js加载时间提前,能提升整体js加载时长。

2. 细小js文件合并问题

将同文件夹下的琐碎js文件,合并至同一个文件。

vite配置修改

你可以通过配置 build.rollupOptions.output.manualChunks 来自定义 chunk 分割策略(查看 Rollup 相应文档)。在 Vite 2.8 及更早版本中,默认的策略是将 chunk 分割为 indexvendor。这对一些 SPA 来说是好的策略,但是要对所有应用场景提供一种通用解决方案是非常困难的。从 Vite 2.9 起,manualChunks 默认情况下不再被更改。你可以通过在配置文件中添加 splitVendorChunkPlugin 来继续使用 "分割 Vendor Chunk" 策略:

js

javascript 复制代码
// vite.config.js
import { splitVendorChunkPlugin } from 'vite'
export default defineConfig({
  plugins: [splitVendorChunkPlugin()],
})

也可以用一个工厂函数 splitVendorChunk({ cache: SplitVendorChunkCache }) 来提供该策略,在需要与自定义逻辑组合的情况下,cache.reset() 需要在 buildStart 阶段被调用,以便构建的 watch 模式在这种情况下正常工作。

WARNING

你应该使用 build.rollupOptions.output.manualChunks 函数形式来使用此插件,如下面例子所示,另外还需要将默认的插件去掉,不然会走默认方式。另外如果使用对象形式,插件将不会生效。

python 复制代码
    build: {
      rollupOptions: {
        manualChunks(id) {
          if (id.includes('preview/main') || id.includes('views/preview')) {
            return 'mianPreview';
          }
          if (id.includes('packages/composables')) {
            return 'composables';
          }
        },
      },
    },

运行结果

1. js合并成功

previw.js与main.js合并成功,previw加载提前,页面加载更快

2. packages/composables文件夹下的文件都被打包到composables.js里面

相关推荐
亿元程序员1 分钟前
你知道三国志战略版是怎么实现横竖屏动态切换的吗?
前端
BD_Marathon3 分钟前
Vue3_双向绑定
前端·javascript·vue.js
霍理迪13 分钟前
CSS复合、关系、属性、伪类选择器
前端·javascript·css
棒棒的唐14 分钟前
Avue2图片上传使用object对象模式时,axios的请求模式用post还是get?
开发语言·前端·javascript·avue
OnlyEasyCode19 分钟前
Linux部署Nginx前后端web教程
linux·前端·nginx
梵得儿SHI20 分钟前
Vue Router 路由管理从入门到精通:基础、导航与参数传递实战(含避坑指南)
前端·javascript·vue.js·路由基础配置·版本适配·路由实例创建·路由规则定义
IT_陈寒23 分钟前
JavaScript 性能优化实战:7 个让你的应用提速 50%+ 的 V8 引擎技巧
前端·人工智能·后端
Watermelo61724 分钟前
【前端实战】Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦
前端·javascript·网络·vue.js·网络协议·性能优化·用户体验
不一样的少年_24 分钟前
【性能监控】别只做工具人了!手把手带你写一个前端性能检测SDK
前端·javascript·监控
开发者小天25 分钟前
react中使用复制的功能
前端·javascript·react.js