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 相关文章推荐
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
js工具方法弹出蒙版
May 08 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
jquery 列表双向选择器之改进版
Aug 09 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
Nov 28 Javascript
fmt:formatDate的输出格式详解
Jan 09 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
Nov 21 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
浅谈Vuex注入Vue生命周期的过程
May 20 Javascript
微信小程序webSocket的使用方法
Feb 20 Javascript
Node.JS如何实现JWT原理
Sep 18 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
js传递数组参数到后台controller的方法
2018/03/29 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python基于event实现线程间通信控制
2020/01/13 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
大学生学业生涯规划
2014/01/05 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
世界水日宣传活动总结
2015/02/09 职场文书