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写一个字符串转成驼峰的实例
Jun 21 Javascript
JQuery的$命名冲突详细解析
Dec 28 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 Javascript
javascript如何写热点图
Dec 08 Javascript
JavaScript实现邮箱地址自动匹配功能代码
Nov 28 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
基于JavaScript实现带缩略图的轮播效果
Jan 12 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
Apr 25 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP数据库开发知多少
2006/10/09 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
javascript 动态添加表格行
2006/06/22 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python中异常捕获方法详解
2017/03/03 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
python 实现线程之间的通信示例
2020/02/14 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
财务会计专业毕业生自荐信
2013/10/19 职场文书
数控专业应届生求职信
2013/11/27 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
《春雨》教学反思
2014/04/24 职场文书
师德师风建设方案
2014/05/08 职场文书
小学推普周活动总结
2015/05/07 职场文书
就业推荐表院系意见
2015/06/05 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
PHP获取学生成绩的方法
2021/11/17 PHP
为Centos安装指定版本的Docker
2022/04/01 Servers