vue项目首屏加载时间优化实战项目首屏加载时间优化实战
问题问题
单页面应用的一个问题就是首页加载东西过多,加载时间过长。特别在移动端,单页面应用的首屏加载优化更是绕不开的话
题。下面我会写出我在项目中做的一些优化,希望大家能够相互讨论,共同进步。
我的项目 vue-cli3构建的,vue+vue-router+vuex,UI框架选用 element-ui,ajax方案选用 axios,服务器使用Nginx 。用到的
这些技术都是现在用的比较广泛的,看到这篇文章,我估计你和我用的技术应该差不多。
第一步:第一步:webpack-bundle-analyzer 分析分析
首页我们来看看没有经过任何优化的打包分析,vue-cli3的项目直接 vue-cli-service build –report 就会生成一个report.html,
打开这个html就能看到,不是vue-cli3的项目需要自行安装这个插件,参考链接, 点击 。
如上图所示在vendor比较大的文件有element,moment,echart,还有jquery,然后还有一些没见过的vue-qriously这些组
件,接下来我们来一步一步让vendor变小
第二步:初步优化第二步:初步优化
1. 仔细考虑组件是否需要全局引入仔细考虑组件是否需要全局引入
在我们的main.js,我发现有很多组件被全局引入,其中有些组件只有1,2个页面用到,这些组件不需要全部引入
import ImageComponent from 'COMMON/imageComponent'
import InfiniteLoading from 'COMMON/infiniteLoading'
import SearchDialog from 'COMMON/SearchDialog'
import BasicTable from 'COMMON/BasicTable'
import VueQriously from 'vue-qriously'
Vue.use(ImageComponent)
Vue.use(InfiniteLoading) // 可以去除
Vue.use(SearchDialog) // 可以去除
Vue.use(BasicTable) // 可以去除
Vue.use(VueQriously) // 可以去除
上面一段代码是我们main.js中的代码,其中ImageComponent是用来处理图片的,用到的页面很多,其他的组件都只要较少
的页面用到,我们在main.js中删除,移到具体的页面中去。
2. 手动引入手动引入 ECharts 各模块各模块
默认引入 ECharts 是引入全部的“`import * as ECharts from ‘echarts’ “`我们只需要部分组件,只需引入自己需要的部分。参考
地址, 点击
import VueECharts from 'vue-echarts/components/ECharts.vue'