博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次vue-webpack项目优化实践【更新】
阅读量:6495 次
发布时间:2019-06-24

本文共 1716 字,大约阅读时间需要 5 分钟。

项目现状

项目是一个数据监测平台,引入了ehcart和three.js 负责项目的数据可视化;打包后,体积高达2.1M,这个体积相比于我的项目规模来说就显得稍有笨重了

使用webpack-bundle-analyzer分析了一下各个文件所占用的比例:

clipboard.png

整个项目文件分布大体清晰了,现在开始优化走起!

优化思路

根据 wba的显示,第三方插件是大部头,包括three.js echart组件elementUI组件

three.js优化空间不大,主要关注另外两个上面。

echarts

根据我的项目需求,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 = echarts

第一次优化后.png

echart优化后.png

elementUI

同理echart,elementUI同样按需求导入,替换之前的整体引入。

elementUI按需引入需要安装 babel-plugin-component包,在babelrc文件中进行如下修改:

"plugins": [              ...               ["component",               {                 "libraryName": "element-ui",                 "styleLibraryName": "theme-chalk"               }]            ]

优化后:

优化elementUI.png

经过对第三方插件的优化,打包后的文件缩小了近30%。

优化后.png

目前为止,项目打包后的大部头就是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分析出来的图已经很好看了。

clipboard.png

后记

这次的优化比较简单,主要是通过对自己项目的优化,熟悉webpack-bundle-analyzer的操作和使用这个插件的来优化webpack打包文件的方法和思路;算是简单的练手记录一下吧。当然,从整体优化的大维度上来说优化的点还有很多,这个文章继续更新下去。

转载地址:http://ltuyo.baihongyu.com/

你可能感兴趣的文章
再论机械式针对接口编程
查看>>
25 个 Linux 性能监控工具
查看>>
C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
查看>>
Tengine-2.1.1 ngx_http_concat_module 400问题
查看>>
Windows中挂载安装ISO文件
查看>>
Wayland 1.0发布
查看>>
golang的goroutine是如何实现的?
查看>>
乐视云基于Kubernetes的PaaS平台建设
查看>>
R 学习笔记《十》 R语言初学者指南--图形工具
查看>>
PHP通过读取DOM抓取信息
查看>>
DICOM医学图像处理:DICOM网络传输
查看>>
nio和传统Io的区别
查看>>
移动端网页布局中需要注意事项以及解决方法总结
查看>>
(原创)Linux下查看系统版本号信息的方法
查看>>
oracle
查看>>
基于C的文件操作(转)
查看>>
redis使用过程中主机内核层面的一些优化
查看>>
我也要谈谈大型网站架构之系列(2)——纵观历史演变(下)
查看>>
OctoberCMS目录结构-基于Laravel
查看>>
大话设计模式(Golang) 二、策略模式
查看>>