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学习笔记(五)正则表达式
Apr 08 Javascript
javascript级联下拉列表实例代码(自写)
May 10 Javascript
js实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
Aug 10 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
jQuery添加options点击事件并传值实例代码
May 18 Javascript
Vue分页组件实例代码
Apr 17 Javascript
js下拉菜单生成器dropMenu使用方法详解
Aug 01 Javascript
浅谈Vue SPA 首屏加载优化实践
Dec 15 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
亲自动手实现vue日历控件
Jun 26 Javascript
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
详解在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
长波知识介绍
2021/03/01 无线电
PHP环境搭建最新方法
2006/09/05 PHP
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP生成HTML静态页面实例代码
2008/08/31 PHP
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
django2笔记之路由path语法的实现
2019/07/17 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
Python list与NumPy array 区分详解
2019/11/06 Python
python matlab库简单用法讲解
2020/12/31 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
中专毕业生个人职业生涯规划
2014/02/19 职场文书
护理专科学生自荐书
2014/07/05 职场文书
重点工程汇报材料
2014/08/27 职场文书
信用卡工资证明范本
2015/06/19 职场文书
养成教育工作总结
2015/08/13 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
MYSQL 表的全面总结
2021/11/11 MySQL
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers