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 相关文章推荐
jquery交替变换颜色的三种方法 实例代码
Nov 19 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
js时间控件只显示年月
Jan 08 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
一个简易时钟效果js实现代码
Mar 25 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
Jan 25 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
Feb 03 Javascript
在vue中给列表中的奇数行添加class的实现方法
Sep 05 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
React实现动效弹窗组件
Jun 21 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
很实用的一个完整email发送程序
2006/10/09 PHP
Php注入点构造代码
2008/06/14 PHP
关于svn冲突的解决方法
2013/06/21 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
浅谈js闭包理解
2019/03/28 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python MD5加密实例详解
2017/08/02 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
通过cmd进入python的实例操作
2019/06/26 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
英文简历中的自我评价
2013/10/06 职场文书
新学期班主任寄语
2014/01/18 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
电台广播稿范文
2015/08/19 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
python爬虫selenium模块详解
2021/03/30 Python
MySQL Router的安装部署
2021/04/24 MySQL
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
mysql sock 文件解析及作用讲解
2022/07/15 MySQL