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简单体验
Jan 10 Javascript
JavaScript Event学习第十一章 按键的检测
Feb 10 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
Aug 17 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
js实现图片无缝滚动
Dec 23 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
JavaScript交换两个变量值的七种解决方案
Dec 01 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
微信小程序block的使用教程
Apr 01 Javascript
p5.js临摹旋转爱心
Oct 23 Javascript
jQuery 动画与停止动画效果实例详解
May 19 jQuery
微信小程序实现拼图小游戏
Oct 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/08/08 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
企业后勤岗位职责
2014/02/28 职场文书
李开复演讲稿
2014/05/24 职场文书
债务纠纷委托书
2014/08/30 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
浅谈Python数学建模之固定费用问题
2021/06/23 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL
python套接字socket通信
2022/04/01 Python