vue项目优化之通过keep-alive数据缓存的方法


Posted in Javascript onDecember 11, 2017

<keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

<keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

prop:

  1. include: 字符串或正则表达式。只有匹配的组件会被缓存。
  2. exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

通过vue提供的keep-alive减少对服务器的请求次数        

VUE2.0中提供了一个keep-alive方法,可以用来缓存组件,避免多次加载相应的组件,减少性能的消耗。比如, 一个页面的数据包括图片、文字等用户都已经加载完了,然后用户通过点击跳转到了另外一个界面。然后从另外一个界面通过返回又回到了原先的界面。如果没有设置的话,那么原先界面的信息就要重新向服务器请求得到。而通过vue提供的keep-alive可以是页面的已经请求的数据得以保存,减少请求的次数,提高用户的体验程度。

缓存组件又分为两种,缓存整个站点的页面的组件或者缓存部分页面的组件。

1、缓存所有的页面,适用于每个页面都有请求的情况。方法如下,在需要缓存的router-view用keep-alive标签进行包裹起来。

<keep-alive>
<router-view></router-view>
</keep-alive>

将首次触发请求写到created钩子里边,就能实现缓存。比如从列表页,去了详情页,回来还是原来的页面。

2、缓存部分组件或者页面,使用router.meta这个属性通过判断的方法可以实现。方法如下:              

<keep-alive v-if="$route.meta.keepAlive">
<router-view></router-view>
</keep-alive>
<router-view v-if="! $route.meta.keepAlive">
</router-view>

router设置如下:

routers:[
      {  path: '/home',
        name: home,
        meta:{keepAlive: true}   // 设置为true表示需要缓存,不设置或者false表示不需要缓存                    }
     ]

还可以通过新增的属性include/exclude来设置。见名思意,include包含的意思,exclude除了的意思。这里需要用到组件的名称即name来进行设置,所以name肯定就要加上了。  加入 a,b组件需要缓存,c,d组件不需要缓存。写法如下:

<keep-alive include="a,b">
<component></component>
</keep-alive>   
<keep-alive exclude="c,d">
<component></component>
</keep-alive>

vue项目的优化还可以通过组件的按需加载来实现,就像图片的懒加载一样,如果客户根本就没有看到那些图片,而我们却在打开页面的时候全部给加载完了,这样会大大的增加请求的时间,降低用户的体验程度。懒加载在很多的网站都有用到,比如淘宝、京东等等这样的购物网站,上面的图片链接等等都很多,如果你把滚轴迅速的往下拉的时候,你可能会看到图片加载的情况。具体怎么使用,大家可以看另一篇文章: vue项目优化之页面的按需加载(vue+webpack)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6弹出“已终止操作”的解决办法
Nov 27 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
May 04 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
js实现弹窗效果
Aug 09 Javascript
JS运算符优先级与表达式示例详解
Sep 04 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 #Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
Dec 11 #Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 #Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 #Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 #Javascript
浅谈webpack编译vue项目生成的代码探索
Dec 11 #Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
Dec 11 #Javascript
You might like
php教程之phpize使用方法
2014/02/12 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python excel转换csv代码实例
2019/08/26 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
婚庆公司的创业计划书
2014/01/22 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
小学英语课后反思
2014/04/26 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
HTTP中的Content-type详解
2022/01/18 HTML / CSS
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS