Vue项目性能优化、提取公共库(Common Chunks)

embedded/2025/3/5 0:54:16/

SplitChunksPlugin | webpack 中文文档

项目打包: npm run build
根目录下生成一个 dist 文件夹

  • css:当前项目中所有打包后的样式文件
  • js:当前项目中所有打包后的 js 文件
  • app.js 所有 src 目录下内容打包后的结果
  • app.js.map:上面文件的映射文件
  • chunk.js:所有第三方包打包后的文件
  • chunk.js.map:上面文件的映射文件
  • index.html:项目的静态页面

chunk-vendors.js 顾名思义 chunk (块 / 包) - vendors (供应商),即为:不是自己写的模块包,也就是/node_modules项目目录的所有模块包,它们称为第三方模块或供应商模块 

一 . splitChunks

splitChunks配置是 Webpack 的一个特性,主要用于在生产环境(production)下的代码分割。它在构建应用时自动分析模块的共享情况,并将其分割成单独的 chunk,可以在需要时按需加载, 以便于复用和提高缓存利用率

官网推荐的默认行为(vue.config.js)

module.exports = {//...optimization: {splitChunks: {chunks: 'async',minSize: 20000,minRemainingSize: 0,minChunks: 1,maxAsyncRequests: 30,maxInitialRequests: 30,enforceSizeThreshold: 50000,cacheGroups: {defaultVendors: {test: /[\\/]node_modules[\\/]/,priority: -10,reuseExistingChunk: true,},default: {minChunks: 2,priority: -20,reuseExistingChunk: true,},},},},
};

 我所在项目配置的 (除了elementUI, 包括vue, vuex ,vue-router等都可以配置代码分割, 基于我已使用cdn加速, Gzip压缩, 所以只配了elementUI来展示 )

Vue项目性能优化、开启Gzip

Vue项目性能优化、配置CDN加速

module.exports = {// ...//配置代码分割optimization: {splitChunks: {chunks: "all",// 可选值:all,async 和 initial。all功能最强大minSize: 20000, //最小包体积,这里的单位是byte,超过这个大小的包会被splitChunks优化minChunks: 1, maxAsyncRequests: 30, //按需加载时的最大并行请求数maxInitialRequests: 30, // 最多首屏加载30个请求cacheGroups: {vendors: {//vendor是导入的 npm 包(第三方库) ,有人会命名为libs等类名name: "chunk-vendors",test: /[\\/]node_modules[\\/]/, // 使用正则匹配node_modules中引入的模块priority: -10,},elementUI: {name: "chunk-elementUI",priority: 20,test: /[\\/]node_modules[\\/]element-ui[\\/]/,reuseExistingChunk: true, //是否缓存chunks: "async",},// 书写其他依赖包 ...// 备一个优先级最低的chunk-commons.js,用于处理其他公共组件commons: {// 公共模块包name: `chunk-commons`,minChunks: 2,priority: 0,reuseExistingChunk: true, //是否缓存},},},},// ...
};

二. 效果展示

splitChunks配置前

splitChunks配置后 

好处: 利用splitChunks代码分割( 分包 )将chunk-vendors 包拆分成多个chunk-xxxx.js文件, 比如chunk-elementUi.js, chunk-vue.js, chunk-vuex.js等等模块, 单独进行拆分以减少初始加载时间


http://www.ppmy.cn/embedded/170044.html

相关文章

Muduo + OpenSSL 网络交互完整流程

🔥 Muduo OpenSSL 网络交互完整流程 这套架构结合了 Muduo(网络库) OpenSSL(TLS/SSL 加密) BIO(缓存),整个数据流动过程如下: 🌍 1. 网络通信的基本流程 M…

Ubuntu中dpkg命令和apt命令的关系与区别

在 Ubuntu 中,dpkg 和 apt 是软件包管理的核心工具,但二者的角色和功能有显著区别: ​一、功能定位 ​特性​​**dpkg**​​**apt**​​层级​底层工具(直接操作 .deb 文件)高层工具(管理软件仓库和依赖关…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候,浏览器渲染引擎会根据标准之一的css基础盒模型,将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content,padding,border,margin 下…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的电脑本地部署一下DeepSeek试试,由于不希望污染电脑的Windows环境,所以在wsl中安装了ollama,使用ollama拉取DeepSeek模型。然后在Windows中安装了Docker Desktop,在Docker中部署了Open-WebUI,最后再在Ope…

基于coze+微信小程序的ai对话

界面介绍&#xff1a; 代码&#xff1a;&#xff08;替换你的coze的配置&#xff09; <template><view class"container"><!-- 高斯模糊背景 --><view class"animated-bg"><view class"gradient-blob"></view…

mybatis相关的面试题及答案第一弹

1. MyBatis的核心组件有哪些&#xff1f;它们的作用是什么&#xff1f; 答案&#xff1a; MyBatis的核心组件包括&#xff1a; SqlSessionFactory&#xff1a;负责创建SqlSession对象&#xff0c;是MyBatis的核心工厂。SqlSession&#xff1a;用于执行SQL语句、获取映射器&am…

探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验

文章目录 2.5 CRC 校验2.5.1 前言2.5.2 CRC算法简介2.5.3 CRC计算的详细过程2.5.4 CRC校验的两种方法详解**分离比较法****整体运算法****不同位出错与余数的关系****总结** 2.5.5 CRC计算的C实现及工具介绍**C实现CRC计算****CRC计算工具推荐** **2.5.6 总结&#xff1a;CRC校…

OpenHarmony启动恢复子系统

OpenHarmony启动恢复子系统 简介 启动恢复负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。涉及以下组件&#xff1a; init组件 支持使用LiteOS-A和Linux内核的平台。 负责处理从内核加载第一个用户态进程开始&#xff0c;到第一个应用程序启动之间的…