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 相关文章推荐
DOM精简教程
Oct 03 Javascript
JQuery 学习技巧总结
May 21 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
JS实现简单的顶部定时关闭层效果
Jun 15 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
JS填写银行卡号每隔4位数字加一个空格
Dec 19 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
swiper实现异形轮播效果
Nov 28 Javascript
JS实现简单日历特效
Jan 03 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
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
2019/07/11 jQuery
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
python处理cookie详解
2014/02/07 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python如何求解两数的最大公约数
2018/09/27 Python
python交换两个变量的值方法
2019/01/12 Python
Python常用特殊方法实例总结
2019/03/22 Python
详解Python实现进度条的4种方式
2020/01/15 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
LN-CC日本:高端男装和女装的奢侈时尚目的地
2019/09/01 全球购物
生产班组长岗位职责
2014/01/05 职场文书
电视购物广告词
2014/03/19 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL