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 相关文章推荐
基于jquery的商品展示放大镜
Aug 07 Javascript
Jquery 数据选择插件Pickerbox使用介绍
Aug 24 Javascript
Angularjs 基础入门
Dec 26 Javascript
JavaScript实现点击按钮切换网页背景色的方法
Oct 17 Javascript
JavaScript中的await/async的作用和用法
Oct 31 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
使用jQuery实现购物车结算功能
Aug 15 jQuery
Vue-router 中hash模式和history模式的区别
Jul 24 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
Jan 09 Javascript
使用JS实现动态时钟
Mar 12 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 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
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
jQuery插件的写法分享
2013/06/12 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
javascript表单验证大全
2015/08/12 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
Python中unittest用法实例
2014/09/25 Python
Python set集合类型操作总结
2014/11/07 Python
python组合无重复三位数的实例
2018/11/13 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
如何使用Python调整图像大小
2020/09/26 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
土地租赁协议书
2015/01/29 职场文书