vue使用keep-alive实现数据缓存不刷新


Posted in Javascript onOctober 21, 2017

到现在,接触vue也小段时间了,项目进行到了一定程度,然而项目缺少了缓存机制,所以每次跳转页面都会重新created一下数据,虽说系统的数据请求速度很快,但是这样做对系统的性能会有很大的坏处的,所以到这里就要对系统优化下,添加缓存了。

其实到现在,对于vue还是没有玩通,每深挖一次,就会发现一次vue的精彩,开始不清楚要用什么实现缓存,找了好久,有好几种说法,就是用vuex、vuet或者keep-alive,然后对比了一下,在我认为,vuex和vuet是实现状态管理,重心是在数据处理上;想要实现整体的缓存,阻止created的刷新,就要用keep-alive。

所以这里我想要给大家介绍下如何用keep-alive实现缓存的页面?其实很简单,就是几句话而已。

1、keep-alive要配合router-view使用,这里要注意一点就是,keep-alive本身是vue2.0的功能,并不是vue-router的,所以再vue1.0版本是不支持的。keep-alive官方文档点这里,代码实现如下,router-view是在入口APP.vue里面

<template>
 <div id="app">

  <keep-alive>
   <router-view></router-view>
  </keep-alive>
  
  <!--这里是其他的代码-->
 </div>
</template>

2、这样就会实现组件的缓存,但是有个缺点就是所有组件都会被缓存,可是现实中就是我们有些页面还是要及时刷新的,比如列表数据,想要查看详情的时候都是共用一个组件,只是刷新页面,所以这个共用的组件是不能够缓存的,不然会造成点其他的条目都是之前缓存的数据。那要怎么自定义呢,那就要在router-view里面多加个v-if判断了,然后在router定义的文件里面在想要缓存的页面多加上“meta:{keepAlive:true}”,不想要缓存就是“meta:{keepAlive:false}”或者不写,只有为true的时候是会被keep-alive识别然后缓存的。

<template>
 <div id="app">
  <!--缓存想要缓存的页面,实现后退不刷新-->
  <!--加上v-if的判断,可以自定义想要缓存的组件,自定义在router里面-->
  <keep-alive>
   <router-view v-if="$route.meta.keepAlive"></router-view>
  </keep-alive>
  <router-view v-if="!$route.meta.keepAlive"></router-view>
  
  <!--这里是其他的代码-->
 </div>
</template>

3、在router文件加上meta判断

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
export default new Router({
  {//home会被缓存
    path:"/home",
    component:home,
    meta:{keepAlive: true}
  }
  {//hello不会被缓存
    path:"/hello",
    component:hello,
    meta:{keepAlive: false}
  }
})

想要看有没有缓存成功,可以在各个组件的created钩子里面打印输出标志,缓存成功就是首次进入页面,created会请求数据,后面就不会再次请求而是直接调用缓存的

添加了缓存可以大大减少对系统性能的损坏,毕竟做数据处理型的系统,数据过于庞大,每次都要请求一下页面是很不好的,有了缓存,该缓存的缓存,不想缓存也可以实时刷新

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

Javascript 相关文章推荐
jquery validator 插件增加日期比较方法
Feb 21 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
Jan 09 Javascript
js自定义回调函数
Dec 13 Javascript
详解Javascript事件驱动编程
Jan 03 Javascript
Vue.js中兄弟组件之间互相传值实例
Jun 01 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
Angular之toDoList的实现代码示例
Dec 02 Javascript
JS实现遍历不规则多维数组的方法
Mar 21 Javascript
ES6 系列之 WeakMap的使用示例
Aug 06 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 #Javascript
Vue filter介绍及其使用详解
Oct 21 #Javascript
详解node nvm进行node多版本管理
Oct 21 #Javascript
JS实现瀑布流布局
Oct 21 #Javascript
js实现Tab选项卡切换效果
Jul 17 #Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 #Javascript
js注册时输入合法性验证方法
Oct 21 #Javascript
You might like
PHP修改session_id示例代码
2014/01/08 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
用python实现刷点击率的示例代码
2019/02/21 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
一个大学生十年的职业规划
2014/01/17 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android