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

ops/2025/3/4 20:25:36/

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/ops/163110.html

相关文章

win11编译pytorchvision cuda128版本流程

1. 前置条件 本篇续接自 win11编译pytorch cuda128版本流程,阅读前请先参考上一篇配置环境。 访问https://kkgithub.com/pytorch/vision/archive/refs/tags/v0.21.0.tar.gz下载源码,下载后解压。 2.编译 打开Miniforge Prompt,依次执行如…

神经网络 - 激活函数(Swish函数、GELU函数)

一、Swish 函数 Swish 函数是一种较新的激活函数,由 Ramachandran 等人在 2017 年提出,其数学表达式通常为 其中 σ(x) 是 Sigmoid 函数(Logistic 函数)。 如何理解 Swish 函数 自门控特性 Swish 函数可以看作是对输入 x 进行“…

基于Django的考研院校数据分析及推荐系统

【Django】基于Django的考研院校数据分析及推荐系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用python语言进行编写,使用Django作为后端框架,通过MySQL数…

Ubuntu22.04安装docker教程

1. 使用命令查看Ubuntu版本 lsb_release -a 2. 安装docker 2.1 安装所需要的系统工具 sudo apt-get update 2.2 添加 Docker 的官方 GPG 密钥 依次执行以下命令 sudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsS…

Java 大视界 -- Java 大数据中的联邦学习激励机制设计与实践(111)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

ARM架构与编程(基于STM32F103)ARM单片机启动流程与MAP文件解析

目录 1、MAP文件浅析 1、1 map文件的MDK设置 1、2 .map文件的组成 1、3 .map文件解析 2、ARM单片机启动流程 2、1 STM32的启动模式 2、2 STM32的启动流程 2、3 初始化堆栈指针 2、4 中断向量表 2、5 跳转复位函数 2、6 总结 1、MAP文件浅析 MDK编译工程,会…

vscode使用豆包MARSCode----集成doubao1.5 DeepSeekR1 DeepseekV3模型的ai编程插件

引入扩展 打开VSCode扩展窗口,在搜索窗口搜索MarsCode,找到MarsCode 插件单击「install」,完成安装,登录即可使用MarsCode 编程助手。 主要功能 主要快捷键 / explain 解释项目代码,AI 返回的内容有结构分类&#…

lua学习(二)

lua学习(二) 函数 定义格式 optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)function_bodyreturn result_params_comma_separated endoptional_function_scope: 该参数是可选的指定函数是全局函数还…