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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
javascript 面向对象全新理练之原型继承
Dec 03 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
Jquery获得控件值的三种方法总结
Feb 13 Javascript
Node.js Streams文件读写操作详解
Jul 04 Javascript
解决html input验证只能输入数字,不能输入其他的问题
Jul 21 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
Jul 31 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
angular学习之动态创建表单的方法
Dec 07 Javascript
微信小程序实现搜索指定景点周边美食、酒店
May 18 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 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 无极分类(递归)实现代码
2010/01/05 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
PHP实现的简单缓存类
2015/07/29 PHP
用js重建星际争霸
2006/12/22 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
python全栈知识点总结
2019/07/01 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
在线课程:Skillshare
2019/04/02 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
机械专业求职信范文
2014/07/15 职场文书
小学老师对学生的评语
2014/12/29 职场文书
大国崛起日本观后感
2015/06/02 职场文书
锦旗赠语
2015/06/23 职场文书
暑假生活随笔
2015/08/15 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang
详解 TypeScript 枚举类型
2021/11/02 Javascript
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers