vue项目优化之通过keep-alive数据缓存的方法


Posted in Javascript onDecember 11, 2017

<keep-alive>是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

<keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。

prop:

  1. include: 字符串或正则表达式。只有匹配的组件会被缓存。
  2. exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。

通过vue提供的keep-alive减少对服务器的请求次数        

VUE2.0中提供了一个keep-alive方法,可以用来缓存组件,避免多次加载相应的组件,减少性能的消耗。比如, 一个页面的数据包括图片、文字等用户都已经加载完了,然后用户通过点击跳转到了另外一个界面。然后从另外一个界面通过返回又回到了原先的界面。如果没有设置的话,那么原先界面的信息就要重新向服务器请求得到。而通过vue提供的keep-alive可以是页面的已经请求的数据得以保存,减少请求的次数,提高用户的体验程度。

缓存组件又分为两种,缓存整个站点的页面的组件或者缓存部分页面的组件。

1、缓存所有的页面,适用于每个页面都有请求的情况。方法如下,在需要缓存的router-view用keep-alive标签进行包裹起来。

<keep-alive>
<router-view></router-view>
</keep-alive>

将首次触发请求写到created钩子里边,就能实现缓存。比如从列表页,去了详情页,回来还是原来的页面。

2、缓存部分组件或者页面,使用router.meta这个属性通过判断的方法可以实现。方法如下:              

<keep-alive v-if="$route.meta.keepAlive">
<router-view></router-view>
</keep-alive>
<router-view v-if="! $route.meta.keepAlive">
</router-view>

router设置如下:

routers:[
      {  path: '/home',
        name: home,
        meta:{keepAlive: true}   // 设置为true表示需要缓存,不设置或者false表示不需要缓存                    }
     ]

还可以通过新增的属性include/exclude来设置。见名思意,include包含的意思,exclude除了的意思。这里需要用到组件的名称即name来进行设置,所以name肯定就要加上了。  加入 a,b组件需要缓存,c,d组件不需要缓存。写法如下:

<keep-alive include="a,b">
<component></component>
</keep-alive>   
<keep-alive exclude="c,d">
<component></component>
</keep-alive>

vue项目的优化还可以通过组件的按需加载来实现,就像图片的懒加载一样,如果客户根本就没有看到那些图片,而我们却在打开页面的时候全部给加载完了,这样会大大的增加请求的时间,降低用户的体验程度。懒加载在很多的网站都有用到,比如淘宝、京东等等这样的购物网站,上面的图片链接等等都很多,如果你把滚轴迅速的往下拉的时候,你可能会看到图片加载的情况。具体怎么使用,大家可以看另一篇文章: vue项目优化之页面的按需加载(vue+webpack)

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

Javascript 相关文章推荐
通过隐藏option实现select的联动效果
Nov 10 Javascript
javascript 防止刷新,后退,关闭
Aug 07 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
ECMAScript6新增值比较函数Object.is
Jun 12 Javascript
基于Jquery easyui 选中特定的tab
Nov 17 Javascript
js倒计时简单实现代码
Aug 11 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
详解微信小程序调用支付接口支付
Apr 28 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 #Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
Dec 11 #Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 #Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 #Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 #Javascript
浅谈webpack编译vue项目生成的代码探索
Dec 11 #Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
Dec 11 #Javascript
You might like
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
简单介绍Python中的struct模块
2015/04/28 Python
python僵尸进程产生的原因
2017/07/21 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
详解Flask前后端分离项目案例
2020/07/24 Python
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
春节晚会主持词
2014/03/24 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
中考学习决心书
2015/02/04 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS