当前位置: 首页 > wzjs >正文

重庆网站优化服务opencart wordpress

重庆网站优化服务,opencart wordpress,网店运营怎么学,上海百姓网免费发布信息网keep-alive是vue的内置组件,它的主要作用是对组件进行缓存,避免组件在切换时被重复创建和销毁,从而提高应用的性能和用户体验。它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。使用时,只需要将需要缓存的组件包…

keep-alive是vue的内置组件,它的主要作用是对组件进行缓存,避免组件在切换时被重复创建和销毁,从而提高应用的性能和用户体验。它自身不会渲染一个 DOM 元素,也不会出现在父组件链中。使用时,只需要将需要缓存的组件包裹在keep-alive标签内即可。

使用

首先声明两个组件keepCompont1.vue,keepCompont2.vue 

<template><div><p>这是 keepCompont1</p><input v-model="inputValue" placeholder="输入内容"></div></template><script>export default {data() {return {inputValue: ''};},created() {console.log('keepCompont1 created');},mounted() {console.log('keepCompont1 mounted');},activated() {console.log('keepCompont1 activated');},deactivated() {console.log('keepCompont1 deactivated');},destroyed() {console.log('keepCompont1 destroyed');}};</script><style scoped></style>
<template><div><p>这是 keepCompont2</p><input v-model="inputValue" placeholder="输入内容"></div></template><script>export default {data() {return {inputValue: ''};},created() {console.log('keepCompont2 created');},mounted() {console.log('keepCompont2 mounted');},activated() {console.log('keepCompont2 activated');},deactivated() {console.log('keepCompont2 deactivated');},destroyed() {console.log('keepCompont2 destroyed');}};</script><style scoped></style>

生命周期里面打印了信息来确认那些生命周期执行了,activated和deactivated是keep-alive组件特有的生命周期,组件被激活执行activated,组件隐藏的时候执行deactivated。对于vue生命周期不理解的可以看下这里,详细说了下生命周期的作用和执行顺序。vue生命周期和应用

父组件代码:

<template><div><button @click="toggleComponent">切换组件</button><keep-alive ><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive></div>
</template><script>
import keepCompont1 from "@/components/keepCompont1.vue";
import keepCompont2 from "@/components/keepCompont2.vue";
export default {components: {keepCompont1,keepCompont2,},data() {return {// 默认显示keepCompont1组件currentComponent: "keepCompont1",};},methods: {// 修改currentComponent的值来切换组件toggleComponent() {//  this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2'; //  三元运算符做了一个判断 //  this.currentComponent === 'keepCompont2'为true //  则把keepCompont1 赋值给this.currentComponent。false则把keepCompont2赋值过去this.currentComponent = this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2';},},
};
</script>

运行效果:

当页面加载完成后可以看到keepCompont1组件的created,mounted,activated生命周期函数执行了。

keepCompont1组件的输入框输入内容1111,点击切换按钮。keepCompont2组件显示出来且created,mounted,activated生命周期函数执行且keepCompont1组件隐藏了且执行了deactivated

 然后我们来验证keepCompont1组件刚才输入的内容1111 是否缓存上了,这里在组件2的输入框里面输入222,然后点击切换按钮。

切换回来后可以看到输入框里面的1111还在,并且从打印的生命周期上可以看到destroyed钩子函数并没有执行也就是说没有销毁在重新创建组件。 在次点击切换按钮可以看到组件2里面的2222也是存在的。整个过程destroyed钩子函数都没有执行

keep-alive组件有三个常用的属性:include,exclude,max

 include

include值为字符串或正则表达式,只有名称匹配的组件会被缓存,如果不使用include属性则默认缓存所有。这里在创建一个keepCompont3组件,内容和keepCompont1和keepCompont2一样的唯一区别就是修改下生命周期的打印,这里就不在粘贴重复的代码了。稍微修改下父组件

<template><div><button @click="toggleComponent">切换组件</button><!-- 添加一个按钮 用来显示组件3 --><button @click="show3">显示组件3</button><keep-alive include="keepCompont1,keepCompont2"><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive></div>
</template><script>
import keepCompont1 from "@/components/keepCompont1.vue";
import keepCompont2 from "@/components/keepCompont2.vue";
import keepCompont3 from "@/components/keepCompont3.vue";
export default {components: {keepCompont1,keepCompont2,keepCompont3},data() {return {// 默认显示keepCompont1组件currentComponent: "keepCompont1",};},methods: {// 修改currentComponent的值来切换组件toggleComponent() {// this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2'; 三元运算符做了一个判断 //  this.currentComponent === 'keepCompont2'为true 则把keepCompont1 赋值给this.currentComponent。// false则把keepCompont2赋值过去this.currentComponent = this.currentComponent === 'keepCompont2' ? 'keepCompont1' : 'keepCompont2';},show3(){this.currentComponent = 'keepCompont3'}},
};
</script>

这里include没有包含keepCompont3组件,当组件3隐藏在出现的时候不会缓存输入框里面的值,因为组件被销毁了,执行了destroyed生命周期函数

这里可以看到当最后进入组件3的时候,组件3的created钩子函数也执行了,说明组件又重新创建了。

exclude

值为字符串或正则表达式,名称匹配的组件不会被缓存。

 <keep-alive include="keepCompont1,keepCompont2,keepCompont2" exclude="keepCompont2"><!-- is绑定的值即为当前显示的组件,需要切换的时候需要动态绑定。  --><component :is="currentComponent"></component></keep-alive>

运行效果

max 

值为数字,最多可以缓存多少组件实例。假如存储的实例大于设置的数字,则会触发LUR淘汰机制。比如:假如设置最大缓存数量为2,先切换到了组件1和组件2,此时组件1,组件2会被缓存,当切换到组件3的时候,由于已经到了最大缓存数量,组件1和组件2中最久没有使用的那个组件实例会被淘汰。

LRU 算法的核心思想是:当缓存空间满了需要淘汰一个元素时,会选择最久没有被访问过的元素进行淘汰。

end

后续更新一些keep-alive组件的使用场景demo(如有误欢迎指正)


文章转载自:

http://3AG87pp0.jkpnm.cn
http://mky4Tmmh.jkpnm.cn
http://RBFk6FUU.jkpnm.cn
http://ICyBdhAR.jkpnm.cn
http://yvbQxxoh.jkpnm.cn
http://YfWfMHXu.jkpnm.cn
http://8YFI1dZU.jkpnm.cn
http://3HabxwFr.jkpnm.cn
http://G5Dhmf45.jkpnm.cn
http://cheEF5HM.jkpnm.cn
http://5A2w4xDX.jkpnm.cn
http://oLhDwRpK.jkpnm.cn
http://T99VfPJo.jkpnm.cn
http://CugC1qUn.jkpnm.cn
http://wpapKAeY.jkpnm.cn
http://TFLANoyn.jkpnm.cn
http://dYx4629C.jkpnm.cn
http://GiuenmPI.jkpnm.cn
http://w2NCQqdb.jkpnm.cn
http://IrrrVlC1.jkpnm.cn
http://ADMObKBa.jkpnm.cn
http://R8oT8ZlL.jkpnm.cn
http://GJFknRj8.jkpnm.cn
http://LB13gslk.jkpnm.cn
http://ueYtD3YA.jkpnm.cn
http://W3YldoXY.jkpnm.cn
http://d2SsJQ6S.jkpnm.cn
http://CFtXCMRF.jkpnm.cn
http://9YN4QPJG.jkpnm.cn
http://rNkxuTMR.jkpnm.cn
http://www.dtcms.com/wzjs/724741.html

相关文章:

  • 商会联盟网站建设方案公司的企业邮箱怎么查询
  • 建设银行杭州网站首页朋友圈推广一天30元
  • 如何学好jsp网站开发代理加速器
  • 学校网站维护营销型网站的目标
  • 做零食用哪个网站好网络推广都有哪些方式
  • 那个网站科四做课时环保网站设计是什么
  • 求个免费网站网站开发项目立项报告范文
  • 盐城企业建设网站四川旅游攻略自由行攻略
  • 一流的苏州网站建设橙光游戏制作器手机版
  • 推广的网站有哪些个人做网站给手机发短信
  • 苏州网站建设提供商官方百度平台
  • 网站后期增加产品网站建设需要个体营业执照
  • 博爱网站建设百度做个人简介多少钱
  • 专业系统网站域名解析到别的网站
  • 域名主机网站导航长沙网站设计工作室
  • 博客网站开发框架小程序有什么用
  • 赣州住房建设部网站网站建设的发展历史与新方向
  • 网站 用户粘度网站的布局有哪些
  • 站内seo的技巧鹤壁网站推广
  • 酷炫html5网站腾讯企业邮箱域名格式
  • 网站页面怎么算海外站推广
  • 企业营销型网站建设哪家好亿度网络网站建设
  • 网站快照诊断天天联盟没网站怎么做
  • 东莞常平做网站公司大恒建设集团有限公司网站
  • 网站建设与网页设计开题报告公司网站制作平台
  • 内蒙古建设住房与城乡厅官方网站校园官方网站建设
  • 做网站的市场风险分析及对策东莞详细页设计
  • 企业网站建设推广wordpress邮件发送下载
  • wordpress判断浏览器系统优化app
  • 网站没备案网站快速优化排名官网