位置: 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排序)

  • 房产税的纳税义务人是房屋的产权所有人
  • 个体户营业税怎么算
  • 采用现金支付
  • 小规模纳税人报税前需要做什么
  • 机票里面的其他税费抵扣吗
  • 核定征收可以改查账征收吗
  • 房地产企业汇缴清算条件
  • 股东无偿借款给公司需要交税吗
  • 以旧换新帐务处理
  • 交车辆购置税需要开车去吗
  • 持有待售资产固定资产 要计提折旧吗
  • 跨年度发现的差错
  • 进口关税税率和增值税
  • 企业贷款银行罚息可以减免吗?
  • 经营损失计入哪类费用
  • 股东出资不做股本做借款该怎么写分录?
  • 销售返利的税务政策
  • 外贸企业购进货物出口后,应退消费税应当贷记
  • 增值税发票过期了,对方可以重开吗
  • 上报汇总和抄报是一个意思吗
  • 企业所得税税前不得扣除的项目
  • 工会经费的缴费主体
  • 母公司向分公司收取管理费
  • 计提工资怎么做账务处理
  • 公司0转让要交哪些税
  • 合营企业之间为什么不构成关联方
  • 科目编码首位与分类编号不符,接受此编码吗
  • 怎么授权gg修改器root权限
  • win10怎么改通知
  • 增值税发票认证操作流程
  • 天猫积分购物券怎么获得
  • php数组函数实现机选双色球
  • 辅导期纳税人增值税专用发票数量不得超过
  • 实收资本没到位会计怎么处理
  • shwiconem.exe - shwiconem是什么进程 有什么用
  • vite首次打开界面加载慢问题/解决
  • fg726p.exe
  • nginx apache php
  • 社会保险费缓缴政策
  • 求源代码
  • php各大框架以及实现原理
  • 向银行借入的资金属于什么
  • 记账凭证和收付账簿区别
  • uniapp scroll-view 上下滑动
  • 给客户开的发票,在邮寄过程中丢了怎么办?
  • 代发工资如何计算
  • 报销差旅费属于什么现金流量项目
  • 销售费用包括哪些明细科目
  • 哪些固定资产是按8年折旧的
  • 什么叫挂往来
  • 公司向法人借款有税务风险吗
  • 商场扣钱犯法
  • 融资租入固定资产改建支出计入
  • 存货盘点后的检查
  • 进项税额转出再转入
  • 零星采购多少不需要发票
  • 收到对方红字发票信息表怎么处理
  • 车票抵扣进项税怎么计算
  • 未按照规定编制应急预案的,责令限期改正,可以处罚款
  • 销售废旧物资是否缴税 如何账务处理
  • linux支持多种平台
  • centos查看硬盘信息的命令
  • ubuntu sudo apt
  • mac地图怎么标记多个位置
  • 苹果mac怎么复制文字
  • centos5.5加固
  • win10正式版版本
  • linux usb audio
  • win7系统运行红警黑屏有声音
  • WIN7如何关闭自动关机
  • js定义函数的几种方法
  • css优化提高性能的方法有哪些
  • js自动切换图片效果
  • 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
  • 医院缴纳什么税
  • 宁波市税务网上营业厅
  • 一般纳税人按季申报的行业
  • 上海社保联网
  • 所得税的核定征收方法
  • 宁夏地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设