浅谈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 相关文章推荐
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
使用BootStrap进行轮播图的制作
Jan 06 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
Jan 09 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
JS async 函数的含义和用法实例总结
Apr 08 Javascript
vue实现虚拟列表功能的代码
Jul 28 Javascript
javascript中call,apply,bind的区别详解
Dec 11 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 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 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
应届生新闻编辑求职信
2013/11/19 职场文书
销售团队获奖感言
2014/08/14 职场文书
股东授权委托书范本
2014/09/13 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
SQL SERVER存储过程用法详解
2022/02/24 SQL Server