记一次vue-webpack项目优化实践【更新】

项目现状

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

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

clipboard.png

整个项目文件分布大致清晰了,如今开始优化走起!web

优化思路

根据 wba的显示,第三方插件是大部头,包括three.js echart组件elementUI组件
three.js优化空间不大,主要关注另外两个上面。element-ui

echarts

根据个人项目需求,echart主要用到的是linechart,其余图表不须要。而在开发过程当中,我把整个echart都引用进来,实际上是很没有必要的。
ehcart总体引用方式babel

import echarts from ("echarts")
vue.prototype.$echarts = 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"
               }]
            ]

优化后:ui

优化elementUI.png

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

优化后.png

目前为止,项目打包后的大部头就是three.js,这个目前的优化空间较小。
而对echart改造给打包体积上带来的收益仍是很明显的。prototype

路由懒加载

项目初期,咱们每每在在首次加载的时候将全部的路由所有加载,致使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打包文件的方法和思路;算是简单的练手记录一下吧。固然,从总体优化的大维度上来讲优化的点还有不少,这个文章继续更新下去。

相关文章
相关标签/搜索