浅谈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实现最简单的滑动菜单效果代码
Sep 12 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
Bootstrap中data-target 到底是什么
Feb 14 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
js中的事件委托或是事件代理使用详解
Jun 23 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
JavaScript小技巧带你提升你的代码技能
Sep 15 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
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
解决uWSGI的编码问题详解
2017/03/24 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
如何转换一个字符串到enum值
2014/04/12 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
给男朋友的道歉信
2014/01/12 职场文书
代理商会议邀请函
2014/01/27 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
球队口号
2014/06/18 职场文书
三八节标语
2014/06/27 职场文书
小学端午节活动总结
2015/02/11 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python