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 相关文章推荐
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
7个Javascript地图脚本整理
Oct 20 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
javascript 快速排序函数代码
May 30 Javascript
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
javascript unicode与GBK2312(中文)编码转换方法
Nov 14 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
js生成word中图片处理方法
Jan 06 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
react如何快速设置文件路径别名
Apr 28 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服务器页面间跳转实现方法
2012/08/02 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
ie 调试javascript的工具
2009/04/29 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
大学社团活动策划书
2014/01/26 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
户外活动总结范文
2014/04/30 职场文书
网络编辑求职信
2014/04/30 职场文书
搞笑的获奖感言
2014/08/16 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
大学推普周活动总结
2015/05/07 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
python使用glob检索文件的操作
2021/05/20 Python