摘要:优化空间不大主要关注另外两个上面。目前为止,项目打包后的大部头就是,这个目前的优化空间较小。当然,从整体优化的大维度上来说优化的点还有很多,这个文章继续更新下去。
项目现状
项目是一个数据监测平台,引入了ehcart和three.js 负责项目的数据可视化;打包后,体积高达2.1M,这个体积相比于我的项目规模来说就显得稍有笨重了
使用webpack-bundle-analyzer分析了一下各个文件所占用的比例:
整个项目文件分布大体清晰了,现在开始优化走起!
优化思路根据 wba的显示,第三方插件是大部头,包括three.js echart组件和elementUI组件。
three.js优化空间不大,主要关注另外两个上面。
根据我的项目需求,echart主要用到的是linechart,其他图表不需要。而在开发过程中,我把整个echart都引用进来,其实是很没有必要的。
ehcart整体引用方式
import echarts from ("echarts") vue.prototype.$echarts = echarts
更改为:
import echarts from "echarts/lib/echarts.js" import "echarts/lib/chart/line" import "echarts/lib/component/tooltip" import "echarts/lib/component/title" import "echarts/lib/component/legend" import "echarts/lib/component/legendScroll" import "echarts/lib/component/dataZoom" Vue.prototype.$echarts = echartselementUI
同理echart,elementUI同样按需求导入,替换之前的整体引入。
elementUI按需引入需要安装 babel-plugin-component包,在babelrc文件中进行如下修改:
"plugins": [ ... ["component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" }] ]
优化后:
经过对第三方插件的优化,打包后的文件缩小了近30%。
目前为止,项目打包后的大部头就是three.js,这个目前的优化空间较小。
而对echart改造给打包体积上带来的收益还是很明显的。
项目初期,我们往往在在首次加载的时候将所有的路由全部加载,导致webpack将所有的模块组件打包在一起,造成vendor文件过大;现在使用路由懒加载,方式如下:
const loadPage = (page) => // vue-loader version 13 import (`@/templates/${page}`).then(m => m.default) const routers =[ { path: "/", redirect:"/index", component:loadPage("console") }]
如果你的vue-loader版本是13.X需要使用上面的引用方法
12版本以下:
import (`@/templates/${page}`)
懒加载后,打出来的包整体大小还是1.5M,而vendor.js体积已经比最开始减少一半了。
因为组件分离打包,所以在某一个组件里引用的three这个包也和总包分离了;现在用webpack-bundle-analyzer分析出来的图已经很好看了。
这次的优化比较简单,主要是通过对自己项目的优化,熟悉webpack-bundle-analyzer的操作和使用这个插件的来优化webpack打包文件的方法和思路;算是简单的练手记录一下吧。当然,从整体优化的大维度上来说优化的点还有很多,这个文章继续更新下去。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/101711.html
摘要:写在最前本次分享一下在作者上一次失利即拿到毕业证第二天突然收到阿里社招面试通知失败之后,通过分析自己的定位与实际情况,做出的未来一到两年的规划。在博客有一定曝光度的积累中,陆续收到了一些面试邀请,基本上是阿里的但是我知道我菜。。 写在最前 本次分享一下在作者上一次失利即拿到毕业证第二天突然收到阿里社招面试通知失败之后,通过分析自己的定位与实际情况,做出的未来一到两年的规划。以及本次社招...
摘要:然后类似一样我的命名是可以在页面的任何地方使用,如果你对具体的实现方法有兴趣,欢迎点击本文结尾的链接,去我的仓库上查看。 前言 最近收到一个这样的需求,要求做一个基于 vue 和 element-ui 的通用后台框架页,具体要求如下: 要求通用性高,需要在后期四十多个子项目中使用,所以大部分地方都做成可配置的. 要求做成脚手架的形式.可以 npm 安装 要求实现多页签,并且可以通过浏...
摘要:然后类似一样我的命名是可以在页面的任何地方使用,如果你对具体的实现方法有兴趣,欢迎点击本文结尾的链接,去我的仓库上查看。 前言 最近收到一个这样的需求,要求做一个基于 vue 和 element-ui 的通用后台框架页,具体要求如下: 要求通用性高,需要在后期四十多个子项目中使用,所以大部分地方都做成可配置的. 要求做成脚手架的形式.可以 npm 安装 要求实现多页签,并且可以通过浏...
摘要:手头做的项目开发得差不多了,而打包配置是一开始粗略配置的,不大的项目打包出来得,所以现在必须进行优化。用于生产环境的打包,设置其为后,这些库会提供最小体积的文件。这种情况打包后的体积要更小一些。最后打包结果的体积开销主要就是以上几项。 手头做的项目开发得差不多了,而打包配置是一开始粗略配置的,不大的项目打包出来得6MB+,所以现在必须进行优化。 打包结果分析 执行命令 webpack ...
摘要:背景最近接到一个任务是帮忙优化的体积,项目是用开发,多入口。这就涉及到两次打,那这两次打的如何打通呢的方式配合使用。通过可以将挂载到已经存在的某个变量上。通过其它一些变量的方式暴露出去。不同的配置可以将你的库打成一个库,库甚至是一个库。 背景 最近接到一个任务是帮忙优化jsbundle的体积,项目是用ts开发,多入口。在分析之后发现每个bundle都打了同一份代码(这份代码是其它组提供...
阅读 113·2024-11-07 18:25
阅读 130163·2024-02-01 10:43
阅读 789·2024-01-31 14:58
阅读 761·2024-01-31 14:54
阅读 82581·2024-01-29 17:11
阅读 2886·2024-01-25 14:55
阅读 1928·2023-06-02 13:36
阅读 2870·2023-05-23 10:26