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 相关文章推荐
收集的网上用的ajax之chat.js文件
Apr 08 Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 Javascript
js下将字符串当函数执行的方法
Jul 13 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
js编写的treeview使用方法
Nov 11 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 Javascript
JavaScript原始值与包装对象的详细介绍
May 11 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 array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
用Eclipse写python程序
2018/02/10 Python
python合并同类型excel表格的方法
2018/04/01 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
软件测试题目
2013/02/27 面试题
小学教师自我鉴定
2013/11/07 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
硕士生工作推荐信
2014/03/07 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
预备党员表决心的话
2015/09/22 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server