浅谈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 相关文章推荐
jquery之超简单的div显示和隐藏特效demo(分享)
Jul 09 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
Aug 02 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
vue移动端实现下拉刷新
Apr 22 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
Vue头像处理方案小结
Jul 26 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 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
深入解析php模板技术原理【一】
2008/01/10 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
Angularjs实现上传图片预览功能
2017/09/01 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
Python实现完整的事务操作示例
2017/06/20 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python输入多行字符串的方法总结
2019/07/02 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
学python需要去培训机构吗
2020/07/01 Python
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
Java程序员面试题
2016/09/27 面试题
电子商务自荐书范文
2014/01/04 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android
Python简易开发之制作计算器
2022/04/28 Python
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python