当前位置:首页 > 日记 > 正文

vue使用keep-alive实现数据缓存不刷新

vue使用keep-alive实现数据缓存不刷新

到现在,接触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会请求数据,后面就不会再次请求而是直接调用缓存的

添加了缓存可以大大减少对系统性能的损坏,毕竟做数据处理型的系统,数据过于庞大,每次都要请求一下页面是很不好的,有了缓存,该缓存的缓存,不想缓存也可以实时刷新

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

如何解决office2007不能保存office

如何解决office2007不能保存office

解决方法,如何解决,电脑软件,  现在大多数人都在使用word2007进行文档的编辑,但是有时间可能会出现一些问题,比如:编辑完文档进行保存时,无法保存,一点击保存就会出现错误,文档自动关闭。下面由小编为您提供更多的技巧,希望能帮助您。office2007…

一次性取消Excel表格中换行符的方

一次性取消Excel表格中换行符的方

方法,取消,换行符,一次性,表格,  在EXCEL单元格中如果要强制换行的话,我们必须ALT+ENTER进行强制换行,如果Excel 表格中的换行符很多的话,我们如何一次性取消Excel 表格中的换行符呢?接下来小编为你分享一次性取消Excel表格中换行符的方法,希…

PS怎么快速转换成彩绘效果?

PS怎么快速转换成彩绘效果?

转换成,彩绘,效果,快速,电脑软件,PS打开sd娃娃的图片,想要转换成彩色铅笔的手绘效果,该怎么转换呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、打开PS, ctrl+o打开一张…

JS数组交集、并集、差集的示例代码

JS数组交集、并集、差集的示例代码

数组,示例代码,并集,电脑软件,JS, 本文介绍了JS数组交集、并集、差集,分享给大家,具体如下:由于下面会用到ES5的方法,低版本会存在兼容,先应添加对应的polyfillArray.prototype.indexOf = Array.prototype.indexOf || function (searchElement, …

Js中async/await的执行顺序详解

Js中async/await的执行顺序详解

执行顺序,详解,电脑软件,Js,async,前言虽然大家知道async/await,但是很多人对这个方法中内部怎么执行的还不是很了解,本文是我看了一遍技术博客理解 JavaScript 的 async/await(如果对async/await不熟悉可以先看下这篇文章)后拓展了一下,我理了一…

JS设置随机出现2个数字的实例代码

JS设置随机出现2个数字的实例代码

设置,实例代码,数字,电脑软件,JS,1和2 随机出现<script type="text/javascript"> $(function(){ if (Math.random()>0.5) { console.log("1"); }else{ console.log("2"); } }); </script> PS:JS…

ES6 javascript中class类的get与se

ES6 javascript中class类的get与se

实例分析,电脑软件,javascript,set,class,本文实例讲述了ES6 javascript中class类的get与set用法。分享给大家供大家参考,具体如下:与 ES5 一样, 在 Class 内部可以使用get和set关键字, 对某个属性设置存值函数和取值函数, 拦截该属性的存取行为…

浪漫爱情一男一女情侣签名

浪漫爱情一男一女情侣签名

一女,浪漫爱情,情侣,热门,经典,  情侣签名时刻透露着甜蜜浪漫的气息,展现着浪漫爱情,下面来看看浪漫爱情一男一女情侣签名。情侣签名浪漫爱情一男一女【经典篇】世界这么小,我们就这样遇见世界这么大,分开就很难再见我的每场梦里有你才甜蜜我…

js以及jquery实现手风琴效果

js以及jquery实现手风琴效果

手风琴,效果,电脑软件,js,jquery,最近又复习了jQuery的知识,既然jQuery是javascript的一个库。jQuery能做到的事情javascript也能做到。因此用这两种方法实现了图片手风琴效果。 按照惯例,还是上代码吧,因为代码里有我的注释也就相当于解释了!(…

Nodejs 复制文件/文件夹的方法

Nodejs 复制文件/文件夹的方法

方法,复制文件,电脑软件,Nodejs,1.使用fs复制文件使用fs对象的readFileSync,writeFileSync方法进行读写操作复制cp.jsfunction copyIt(from, to) { fs.writeFileSync(to, fs.readFileSync(from)); //fs.createReadStream(src).pipe(fs.crea…

PS怎么把胡歌的转换成手绘素描?

PS怎么把胡歌的转换成手绘素描?

素描,转换成,手绘,电脑软件,PS,教大家如何把胡歌的照片制作素描效果,方法简单,大部分素描效果都是用这种方法,推荐给大家收藏学习了。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、原素材(举个例子)2、…

微信小程序 参数传递实例代码

微信小程序 参数传递实例代码

实例代码,参数传递,程序,电脑软件,微信小,微信小程序 参数传递实例代码1、通过事件传递参数实例代码:<view data-id="103" bindtap="evenName"></view>Page({ evenName: function(e) { //获得点击事件传递的id console.log(e.target.d…