浅谈vue加载优化策略


Posted in Javascript onMarch 19, 2019

vue.js是一个比较流行的前端框架,与react.js、angular.js相比来说,vue.js入手曲线更加流畅,不管掌握多少都可以快速上手。但是单页面应用也都有其弊病,有时候首屏加载慢的让人捏舌。今天我们以vue cli3.x来说一说如何行之有效的缓解此问题!

方法一 路由懒加载

首屏加载慢的原因无非就是单页面应用需要加载完整个路由表上的页面,而路由懒加载就是来解决这个问题的。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。下面这个就是vue路由懒加载的一个具体例子。方法很简单,如果您不想深入了解,只需按照这个格式引入路由就可以了。如果您对路由懒加载感兴趣,请移步vue-router路由懒加载

浅谈vue加载优化策略

方法二 组件按需加载

为什么要按需加载组件呢?原因也很简单,一些组件库包含丰富的组件,如果我们直接将其引入,不免会引入一些我们压根用不到的组件。这样打包起来体积会比较大,同样显得我们很不专业。因此按需引入就显得很必要了。我们现在就拿iview组件库为例,了解一下按需引入的流程。

1.首先引入按需加载工具 babel-plugin-import

babel-plugin-import是babel它会在编译过程中将 import 的写法自动转换为按需引入的方式。

npm install babel-plugin-import --save-dev

2.在项目根目录创建.babelrc文件并配置按需加载内容

{
 "plugins": [["import", {
  "libraryName": "iview",
  "libraryDirectory": "src/components"
 }]]
}

3.在main.js配置项目需要加载的组件

下面是iview的一个例子

浅谈vue加载优化策略

这里需要注意全局注册的组件需要挂在到vue原型上,例如我们需要使用Notice组件,那我就需要

Vue.prototype.$Notice = Notice;

这样我们就可以正常的使用iview的组件了。

方法三 使用CDN加速策略

在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,那么vendor.js文件体积将会相当的大,影响首开的体验。解决方法是,将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首开的目的。外部的库文件,就可以使用CDN资源。vue cli3.x在配置cdn是和vue cli2.x有一些区别,vue cli在升级后,代码结构变化比较大,配置文件集成到了vue.config.js文件中。下面以amap、axios和qs为例讲述如何使用cdn加载资源。

1.在index.html中引入相关cdn资源

浅谈vue加载优化策略

2.配置externals

vue cli3.x 配置webpack是在vue.config.js的configureWebpack中

浅谈vue加载优化策略

配置完之后,我们就可以正常使用全局的Amap、axios和Qs了

方法四 使用compression-webpack-plugin将文件打包成gzip格式

compression-webpack-plugin这个依赖在npm run build是会生成.gz文件。之后项目访问的文件就是这个.gz文件,正常的项目打包体积会减少一半还要多,是不是很吊

浅谈vue加载优化策略

下面我们来进一步讲述这个这个依赖的使用流程。

1.npm 引入

npm install compression-webpack-plugin --save-dev

2.vue cli3.x在 vue.config.js配置webpack

浅谈vue加载优化策略

3.nginx开启gzip模式

在上一步前端就已经配置好了,之后就是nginx配合开启gzip模式,这个比较简单,只要你对nginx有一点了解,我们在nginx.conf中的http中配置一些代码

浅谈vue加载优化策略

4.验证是否配置成功

这步就很简单了只需要查看chunk类文件的Response Headers的Content-Encoding是否是gzip即可

浅谈vue加载优化策略

以上就是解决vue首屏加载慢的一些方法,希望文章能帮助大家解决问题谢谢。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
JS常见问题整理(持续更新)
Aug 06 Javascript
让复选框只能选择一项的方法
Oct 08 Javascript
js构造函数、索引数组和属性的实现方式和使用
Nov 16 Javascript
js遍历map javaScript遍历map的简单实现
Aug 26 Javascript
基于JavaScript实现自定义滚动条
Jan 25 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
浅谈super-vuex使用体验
Jun 25 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 #Javascript
详解js加减乘除精确计算
Mar 19 #Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 #jQuery
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 #Javascript
vue多层嵌套路由实例分析
Mar 19 #Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 #Javascript
vue项目移动端实现ip输入框问题
Mar 19 #Javascript
You might like
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Python random模块常用方法
2014/11/03 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python之yield和Generator深入解析
2019/09/18 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
工程承包协议书
2014/04/22 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
应届毕业生自荐信
2014/05/28 职场文书
代办社保委托书范文
2014/10/06 职场文书
2014财务年终工作总结
2014/12/08 职场文书
小学家长通知书评语
2014/12/31 职场文书
英语教师个人工作总结
2015/02/09 职场文书
你会写请假条吗?
2019/06/26 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python