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 相关文章推荐
不安全的常用的js写法
Sep 15 Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
回顾Javascript React基础
Jun 15 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 Javascript
微信小程序使用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
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php设计模式之委托模式
2016/02/13 PHP
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
Python中运行并行任务技巧
2015/02/26 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
详解Python文本操作相关模块
2017/06/22 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
python爬虫实例详解
2018/06/19 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python安装gdal的两种方法
2019/10/29 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
python/golang 删除链表中的元素
2020/09/14 Python
试用期转正鉴定评语
2014/01/27 职场文书
旷课检讨书3000字
2014/02/04 职场文书
超市食品安全承诺书
2015/04/29 职场文书
拉贝日记观后感
2015/06/05 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
一条 SQL 语句执行过程
2022/03/17 MySQL
tree shaking对打包体积优化及作用
2022/07/07 Java/Android