位置: IT常识 - 正文

记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度

编辑:rootadmin
dll ? 动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。 起因 在查看hzero前端项目框架介绍时提到了dll,外加之前经常看见dll文件,于是有了兴趣了解一下 webpack dll。 webpack官网介绍 D ... dll ?

推荐整理分享记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。

起因

在查看hzero前端项目框架介绍时提到了dll,外加之前经常看见dll文件,于是有了兴趣了解一下 webpack dll。

webpack官网介绍

DLLPlugin和DLLReferencePlugin用某种方法实现了拆分 bundles,同时还大大提升了构建的速度.

模块预编译原理

webpack.dllPlugin本质是将大量复用模块且不会频繁更新的库进行预编译,且只需要编译一次,编译完成后产出指定文件(可以称为动态链接库)。在之后的构建过程中不会再对这些模块进行编译,而是直接使用DllReferencePlugin来引用动态链接库的代码,因此可以提高构建速度。一般可以将第三方模块进行预编译,如vue、vue-router、vuex等,只要这些依赖模块不更新,就不需要再重新编译。

vue-cli-plugin-dll

因为项目使用的vue-cli构建的,搜到了这么个专门的插件可以使用。为了实践效果。使用两个项目相同的项目来进行对比。

使用** vue create test **创建了个名称为test的项目,在此基础上增加了moment / lodash / bignumber / ElementUI / Viewer / mint / VueKinesis 库来体现效果。

yarn build : 9.37s

yarn serve : 2.08s

复制上面项目出来,重命名项目为test-dll开始实现dll配置。步骤如下:

执行命令 vue add dll 来安装 vue-cli-plugin-dll 插件。记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度

新建vue.config.js 文件来进行相关的配置。const path = require('path')module.exports = { pluginOptions: { dll: { // 入口配置 entry: ['vue','vuex','vue-router','vue-kinesis','v-viewer','moment','mint-ui','lodash','element-ui','core-js','bignumber'], // 输出目录 output: path.join(__dirname, './public/dll'), // 是否开启 DllReferencePlugin, open: true, // 在执行 `dev` , `build` 等其他指令时,程序会自动将 `dll` 指令生成的 `*.dll.js` 等文件自动注入到 index.html 中。 inject: true, } }}生成dll文件

需自行使用命令生成。

npm run dll // oryarn dll // ornpx vue-cli-service dll

配置完成,dll文件生成,此时已经将文件都集中到输出目录中。来看看效果吧!

yarn build: 4.17s

yarn serve: 0.5s

可以清楚的看到,无论是打包还是构建,速度快了很多。且构建出来的文件同样可以执行。我们再来对比下线上怎么请求资源的吧。

test项目:test-dll项目:

可以看见,主要区别在于 chunk-vendors.js 和 dll.508b73da.dll.js 。正常的项目 chunk包大小已经到了11M,打包过程和加载也是主要花时间在这。不过并没有dll包需要加载。相反,经过dll plugin处理后的项目,chunk包只有不到1M,dll包也只有1.6M,极大的缩减了打包和加载时间。同时在首页渲染时也是分离了代码,可以同步进行加载js文件。

当然,我这项目只有文件的引入,没有业务代码,对比才会这么震撼。但是同样可以看出dll可以实现项目的优化。

多入口配置

在这个的基础上,可以在对dll文件拆分进行优化。配置如下:

const path = require('path')module.exports = { pluginOptions: { dll: { // 入口配置 entry: { vue: ["vue", "vue-router", "vuex", 'vue-kinesis'], plugin: ["v-viewer",'moment','lodash','bignumber','core-js'], ui: ["mint-ui",'element-ui'], }, // 输出目录 output: { path: path.join(__dirname, 'public/dll'), filename: '[name].dll.js', // vendor.dll.js中暴露出的全局变量名 // 保持与 webpack.DllPlugin 中名称一致 library: '[name]_[hash]' }, // 是否开启 DllReferencePlugin, open: true, // 在执行 `dev` , `build` 等其他指令时,程序会自动将 `dll` 指令生成的 `*.dll.js` 等文件自动注入到 index.html 中。 inject: true, } }}

通过配置多个entry和对应对output来接收。执行 yarn dll 命令后,会生成多个dll.js文件。

yarn build:yarn serve:

看到打包速度又优化了些,而且可以做到dll.js文件拆分同时加载。在引入的文件多且臃肿的情况下,使用webpack dll进行性能优化是个很好的选择。

注意事项

每当生成过dll中存在依赖需进行升级或更新的时候,都要执行 生成dll文件 的命令来生成新的文件。

本文链接地址:https://www.jiuchutong.com/zhishi/313337.html 转载请保留说明!

上一篇:经典帝国CMS生成sitemap实现代码分享(经典帝国cms生成器下载)

下一篇:python中pandas排序的两种形式(pandas columns排序)

  • 怎样经营微信营销才能消除消费者被压迫感觉(微信经营四步走)

    怎样经营微信营销才能消除消费者被压迫感觉(微信经营四步走)

  • 苹果se2支持双卡吗(苹果13可以双卡双待不)

    苹果se2支持双卡吗(苹果13可以双卡双待不)

  • mate30有光学防抖吗(华为光学防抖手机有哪些)

    mate30有光学防抖吗(华为光学防抖手机有哪些)

  • b150主板支持9代cpu吗(b150主板支持i5几代)

    b150主板支持9代cpu吗(b150主板支持i5几代)

  • 苹果耳机漏电是怎么回事(iphone12耳机漏电)

    苹果耳机漏电是怎么回事(iphone12耳机漏电)

  • qq音乐会员可以几个人用(qq音乐会员可以转移到另一个qq吗)

    qq音乐会员可以几个人用(qq音乐会员可以转移到另一个qq吗)

  • 探探账号异常能恢复吗(探探账号异常能干啥)

    探探账号异常能恢复吗(探探账号异常能干啥)

  • 怎么设置软件密码(怎么设置软件密码vivo)

    怎么设置软件密码(怎么设置软件密码vivo)

  • iphone11耳机是无线的吗(苹果11的耳机是无线的吗)

    iphone11耳机是无线的吗(苹果11的耳机是无线的吗)

  • oppoa9怎么强制重启(oppoa91强制重启)

    oppoa9怎么强制重启(oppoa91强制重启)

  • 华为移动服务有何用(华为移动服务是什么功能)

    华为移动服务有何用(华为移动服务是什么功能)

  • 华为手机上面有个月亮是什么意思(华为手机上面有个耳机图标怎么取消)

    华为手机上面有个月亮是什么意思(华为手机上面有个耳机图标怎么取消)

  • 华为mate30好久上市(华为mate30多久会降价)

    华为mate30好久上市(华为mate30多久会降价)

  • 电脑浏览器在哪(电脑浏览器在哪打开)

    电脑浏览器在哪(电脑浏览器在哪打开)

  • 华为nava是什么意思(nova是什么)

    华为nava是什么意思(nova是什么)

  • 苹果11什么基带(iphone14用的是什么基带)

    苹果11什么基带(iphone14用的是什么基带)

  • 苹果x手机防水吗(苹果x手机防水吗掉水里)

    苹果x手机防水吗(苹果x手机防水吗掉水里)

  • 微鲤实名认证怎么解除(微鲤看看怎么解除绑定身份证)

    微鲤实名认证怎么解除(微鲤看看怎么解除绑定身份证)

  • 苹果手机怎么投屏(苹果手机怎么投屏到电视上观看)

    苹果手机怎么投屏(苹果手机怎么投屏到电视上观看)

  • word如何邮件合并(word如何邮件合并图片)

    word如何邮件合并(word如何邮件合并图片)

  • Win7系统扫描仪添加方法是什么?(win7 扫描仪)

    Win7系统扫描仪添加方法是什么?(win7 扫描仪)

  • 腾讯手游助手闪屏怎么办?(腾讯手游助手闪屏怎么办)

    腾讯手游助手闪屏怎么办?(腾讯手游助手闪屏怎么办)

  • Postman进阶篇(二)-console控制台(查看接口日志、调试代码)(postman入门)

    Postman进阶篇(二)-console控制台(查看接口日志、调试代码)(postman入门)

  • 【GitHub Copilot X】基于GPT-4的全新智能编程助手

    【GitHub Copilot X】基于GPT-4的全新智能编程助手

  • 保险公司代收车船税会计分录
  • 个税走什么科目
  • 公司亏损汇算清单模板
  • 公司购买银行理财产品怎么做账
  • 购买福利用品
  • 去年科目记错如何调账
  • 一般纳税人废业怎么办
  • 交文化事业建设费的行业
  • 生产部门领用低值易耗品,实际成本
  • 会计分录怎么确认借贷方向
  • 老板垫付的费用怎么做凭证
  • 营改增之后对企业的影响
  • 小规模纳税人是简易计税吗
  • 营改增后建安企业账务处理
  • 个体经营户如何开电子发票
  • 建筑企业在增值税方面新出台的政策
  • 金融业融资租赁
  • 货代企业所得税优惠政策
  • 金融企业不良资产批量收购处置业务
  • 建筑业进项税抵扣不足
  • 增值税一般纳税人是什么意思
  • 房地产企业闲置土地怎么处理
  • 被扣留的质保金怎么办
  • windows10如何重置密码
  • 微软雅黑字体一般用在哪里
  • 企业所得税汇算清缴扣除标准2023
  • win11系统开机密码怎么修改
  • 建筑业总产值和营业收入相等吗?
  • 现金日记账漏记一笔怎么办
  • phpstorm运行php
  • 折旧提取后资金如何处理
  • 购进油漆,用于装饰本企业办公楼
  • 曲折的拼音
  • 库存现金盘亏处理流程
  • web实训报告怎么写
  • 用谷歌浏览
  • 收到银行结息收据3
  • 每个月计提折旧的分录
  • 已勾选未确认怎么取消
  • 图书免增值税具体包括哪些
  • python从键盘输入正整数n,计算1+2+3
  • 2022最新款带采集功能抖音壁纸小程序源码
  • c语言指针妙用
  • 资产处置费用是指单位经批准处置资产时发生的费用
  • 企业转钱给个人
  • sqlserver导入导出数据库
  • 辅助账簿属于会计档案吗
  • 承包经营所得适用比例税率
  • 地方水利建设基金减免政策2023
  • 预收账款退款的会计处理
  • 运费发票抵扣要求
  • 工程进度节点奖励考核
  • 外购货物用于促销的账务处理
  • 公司代缴的社保能不能取出来
  • 发现以前年度假期不满
  • 土地储备委员会职责
  • 生活垃圾处理费标准
  • 单位内部部门之间人员调整
  • 缴纳个人社保在哪里查询
  • 破产重组还需要还钱吗
  • 银行卡账户年费
  • 账面价值,账面净值,账面余额三者的区别
  • 发票丢失了怎么报销
  • 规范的建账原则是什么
  • sql查询从入门到实践
  • mysql 修改密码后 unknown error 1820
  • ftp的安装
  • xp无法进入桌面怎么办
  • mentohust配置
  • linux route -n命令结果详解
  • Remoterm.exe - Remoterm是什么进程 有什么用
  • perl的正则表达式语法
  • 深入领悟六个必须坚持
  • 右键打开方式里没有word
  • js中弹出对话框
  • android基于
  • 金融商品转让都包括什么
  • 亳州国税局电话号码
  • 实名办税有什么作用
  • 加油账单怎么查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设