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

时间:2013.05.01 发布人:firelancer

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

已解决问题

谷歌firelancer用户在2013.05.01提交了关于“绅宝vue项目优化之通过keep-alive**缓存的方法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-01T21:06:01。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !

希望以下的回答,能够帮助你。

第1个回答

用户名:dlfgh  

<keep-alive>是Vu门夜面食段并景径e的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

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

prop:

include:字符串或正则表达式。只有匹配的组件会被缓存。exclude:字符串调或正则表达式。任何匹配的增众执般组件都不会被缓存。

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

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

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

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

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

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

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

<k有但蒸eep-alivev-if="$route.meta.keepAlive"><ro汉包uter-view></router-view></keep-alive><router-viewv-if="!$route.meta.kee底数给岁离pAlive"></router-view>

router设置如下:

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

还可以通过新增的属性include/exclude来如收设置。见名思意,include包含的意思,exclude除了的意思。这里需要用到组件的名称阶西假系排是即name来进行设置身各象限杆士啊采,所以name肯定就要加上了。加入a,b组件需要缓存,c,d组件不需要缓存。写法如下:

<keep-房步农阻随轴知aliveincl回需钱混ude="a,b"><component></component></keep-alive><keep-aliveexc点员知胡少守lude="c,d"><component></component></keep-alive>

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

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