浅谈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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
Javascript String对象扩展HTML编码和解码的方法
Jun 02 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
JavaScript闭包和范围实例详解
Dec 19 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
小程序实现列表多个批量倒计时
Jan 29 Javascript
vue+element实现动态加载表单
Dec 13 Vue.js
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
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
JavaScript国旗变换效果代码
2008/08/13 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
vue购物车插件编写代码
2017/11/27 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
大学生新闻专业个人自我评价
2013/11/12 职场文书
大学生入党思想汇报
2014/01/14 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2014年女职工工作总结
2014/11/27 职场文书
社区好人好事材料
2014/12/26 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
Python进程间的通信之语法学习
2022/04/11 Python
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers