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 相关文章推荐
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
jQuery 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
jquery如何获取复选框的值
Dec 12 Javascript
c#+jquery实现获取radio和checkbox的值
Sep 12 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
Jan 17 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
Vue中使用vux的配置详解
May 05 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
js实现盒子移动动画效果
Aug 09 Javascript
详解微信小程序动画Animation执行过程
Sep 23 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 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中使用array函数新建一个数组
2015/11/19 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
Python实现多线程抓取妹子图
2015/08/08 Python
详解Swift中属性的声明与作用
2016/06/30 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python3将变量输入的简单实例
2020/08/19 Python
Django 实现图片上传和下载功能
2020/12/31 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
公司营业员的自我评价
2014/03/04 职场文书
小学教师寄语大全
2014/04/03 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
2015年党员自评材料
2014/12/17 职场文书
Golang 结构体数据集合
2022/04/22 Golang
Android studio 简单计算器的编写
2022/05/20 Java/Android