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

深圳市网站建设广告软文外链平台

深圳市网站建设,广告软文外链平台,学生作业做网站需要什么,html图案代码大全目录前言一,路由缓存1.1 引子1.2 路由缓存的方法1.2.1 keep-alive1.2.2 keep-alive标签中的include属性1.2.3 include中多组件的配置二,activated与deactivated2.1 引子2.2 介绍activated与deactivated2.3 解决需求三,整体代码总结前言 在Vu…

目录

  • 前言
  • 一,路由缓存
    • 1.1 引子
    • 1.2 路由缓存的方法
      • 1.2.1 keep-alive
      • 1.2.2 keep-alive标签中的include属性
    • 1.2.3 include中多组件的配置
  • 二,activated与deactivated
    • 2.1 引子
    • 2.2 介绍activated与deactivated
    • 2.3 解决需求
  • 三,整体代码
  • 总结

前言

在Vue的使用中,为了提高应用的效率,我们可以使用路由缓存这方面的相关知识来解决遇到的问题。

本博客的内容则是对路由缓存及activated与deactivated的详解。期望能对读者有所帮助。

本篇博客需要有对路由相关知识的了解,如需复习可见博客Vue2路由的详细讲解。

一,路由缓存

本节内容讲解路由缓存相关知识,如果了解什么是路由缓存可以跳过引子部分。

1.1 引子

先看一下我的组件结构:
在这里插入图片描述
News和Messages是两个路由组件,可以在App中切换使用。
在这里插入图片描述
News组件:(News组件中有三个输入框,仅用作输入)
在这里插入图片描述
Messages组件:
在这里插入图片描述
了解了上述结构后,现在抛出疑问:如果我再News的输入框中输入一些数据,在我点击Messages后,输入框中的数据还在不在?

现在我们来实践一下:

输入数据:
在这里插入图片描述
点击messages:
在这里插入图片描述
如何判断输入框的数据还存不存在:如果点击News切换到News组件,输入框的内容还在,则代表数据还在,否在就是,随着路由组件的切换,组件中的内容也随之消失。

当我点击News后,数据消失了:
在这里插入图片描述
可以证明,如果不作过多处理,路由组件中的数据会随着路由的切换而消失。在实际的项目应用中如果我写了很多的数据,不小心切换了组件,数据消失了,这样做很影响效率。

因此,这里提出解决对策:路由缓存。

1.2 路由缓存的方法

1.2.1 keep-alive

路由缓存,需要借助一个标签:

<keep-alive></keep-alive>

这个标签中,放置相关的router-view结构:

    <keep-alive><router-view></router-view></keep-alive>

放置后,整个router-view中的数据都会缓存,数据不会随着组件的切换而消失。

那么再次切换路由,刚刚的引子案例中,输入框的内容不会消失。

1.2.2 keep-alive标签中的include属性

刚刚的做法,已经可以实现数据的缓存了,而且实现的是该组件中所有路由组件中数据的缓存。

但是,如果现在有十个路由组件需要切换,我只需要用到一个路由组件中的数据,可是用上述的方法存下的数据却远远多过我们需要的。这样会影响浏览器的工作效率。

所以,我们现在要做的是,只缓存个别路由组件中的数据。

方法是,在keep-alive标签中,配置include属性,include属性的内容是需要缓存数据的路由组件的组件名。

这里要注意的是,组件名是我们自己配置的name,而不是组件本身的名称。

了解做法,我们来实践,单独缓存News组件中的数据:

这里需要注意,News组件中是提前配置好了name的。News组件的组件文件名是News.vue,但是组件名是提前配置好的Name:New,如下图:
在这里插入图片描述
我们现在在App中的keep-alive中配置include:
在这里插入图片描述
做到这一步,News中的数据得到了缓存,并且只有News组件中的数据被缓存了。

1.2.3 include中多组件的配置

如果要缓存的不止一个组件中的数据,二十多个,该如何在include中配置?

其实很简单,给include一个v-bind绑定。一旦使用v-bind,则include中的数据是js语句,在include中可以配置数组类型的数据,把要缓存的组件的组件名称都写进数组即可:
在这里插入图片描述

二,activated与deactivated

2.1 引子

刚刚我们已经了解了路由缓存的相关知识。

现在我们有了新的需求:在上面已经写好的基础上(缓存了New和Message两个组件中的数据),利用好消息界面,写一个定时器,每隔五毫秒打印“消息来了”。当切换到别的组件时,打印停止。

现在我们先来试一下,看一下不做什么处理可不可以直接实现。

首先,这是我message的写法:
在这里插入图片描述
当我们打开项目时,下方还没有打印相关内容。因为,Message组件还没能被渲染:
在这里插入图片描述
接着,我点击Messages按钮切换出Messages组件,下方不断打印出“消息来了":
在这里插入图片描述
然后我切换到News组件发现下面会一直打印:
在这里插入图片描述
出现此现象的本质原因:Message整个组件被缓存了。

那么,我们希望的是什么呢?我们希望点击News按钮后,Message组件的定时器能够被销毁。但是数据依旧被缓存。

这里为了说明问题我在message组件中加一个类似于News中的input框。我们的需求可以通过,定时器随着切换其他组建后被销毁的同时,Message中的数据依旧存在来体现。
在这里插入图片描述
在这里插入图片描述

2.2 介绍activated与deactivated

这里要介绍两个钩子函数(生命周期函数):activated与deactivated。

这两个是专门用于路由组件的函数。

先介绍一下:

activated,可译为”激活的“,路由组件从未出现出现时运行。

deactivated:可译为“失活的”,路由组件被切换走时运行。

我们可以来测试一下是不是如此,代码:
在这里插入图片描述
点击Messages按钮:
在这里插入图片描述
把Messages切换走:
在这里插入图片描述
回到需求,通过这两个生命周期函数,我们可以通过两个组件的生命周期函数实现:在messages组件出现时激活定时器,在messages组件被切走时销毁定时器。

2.3 解决需求

利用钩子函数,在路由组件activated(激活)时候,设置定时器,在路由组件deactivated(被切换走)的时候销毁定时器:
在这里插入图片描述
利用此方法,缓存不会受影响。

现在整体代码写完,我们来看一下效果:
messages未出现:
在这里插入图片描述
点击messages按钮后,message在激活时定时器被创建,开始打印”消息来啦!“。且此时在输入框中缓存数据。
在这里插入图片描述

在点击News按钮,Messages被切换走,定时器被销毁,控制台不再打印内容,但数据依旧缓存:
在这里插入图片描述
实现需求。

三,整体代码

读者可以使用关键代码,然后进行实践。

router中index.js的配置:

import VueRouter from 'vue-router'//引入一级路由
import News from '../pages/News'
import Messages from '../pages/Messages'export default new VueRouter({routes: [{path: '/news',component: News},{path: '/messages',component: Messages}]
})

App组件:

<template><div><router-link to="/news"><button>News</button></router-link><router-link to="/messages"><button>Messages</button></router-link><keep-alive :include="['New', 'Message']"><router-view></router-view></keep-alive></div>
</template><script>
export default {name: 'App'
}
</script><style scoped></style>

News组件:

<template><div><h1>News</h1><ul><li v-for="n in news" :key="n.id">{{ n.title }} <input type="text"></li></ul></div>
</template><script>
export default {name: 'New',data() {return {news: [{id: 1, title: '消息1'},{id: 2, title: '消息2'},{id: 3, title: '消息3'}]}}
}
</script><style scoped></style>

Messages组件:

<template><div><h1>Messages</h1><input type="text"></div>
</template><script>export default {name: 'Message',activated() {this.timer = setInterval(() => {console.log('消息来啦!')}, 500)},deactivated() {clearInterval(this.timer)}}
</script><style scoped></style>

总结

本节内容讲解了路由的缓存及路由组件的两个生命周期的应用。

以下我总结几个需要注意的地方:
1.在路由的缓存时,如需使用include配置项,include内部应当是需要缓存的组件的组件名称;
2.新介绍的两个生命周期函数是针对路由组件的,普通组件无法使用。

以上内容就是对Vue中路由的缓存及两个路由组件生命周期的讲解。后续有机会会出一期关于我对生命周期的理解的博客。

最后,感谢大家的阅读,欢迎关注!

http://www.zhongyajixie.com/news/29692.html

相关文章:

  • 西安网站维护内部优化
  • 可以用自己的电脑做网站吗广州seo关键词优化是什么
  • 网站建设 图标淘客推广
  • 怎么用新浪云做淘宝客网站网站推广的具体方案
  • 十大不收费看盘网站网站seo是什么
  • 福州网站建设网站设计网站推广百度官方网站网址是多少
  • 杭州做网站多少钱四川自助seo建站
  • 建筑网片产品资料北京网站快速排名优化
  • 做淘宝货源网站太原网站建设
  • 怎么做网站的用户注册关键词推广是什么意思
  • 网站子页面怎么做快推广app下载
  • php网站开发的技术框架互动营销案例分析
  • 营销型网站设计服务商沧州网络推广公司
  • 电子商城网站开发想要网站推广版
  • 河北移动端网站建设关键词seo是什么
  • 手机 网站 尺寸如何做电商
  • 做网站遇到竞争对手怎么办移动网站优化排名
  • 零食天堂 专做零食推荐的网站电商网站规划
  • 网站开发技术交流群公司网站建设全包
  • 深圳营销网站建设公司哪家好大兴今日头条新闻
  • 未来网站开发需求多aso投放平台
  • 如何搭建https网站seo网络营销推广
  • 深圳品牌网站制作公司哪家好今日头条十大热点
  • 成都网站seo推广优化营商环境条例解读
  • 社会建设办公室网站线上电商怎么做
  • 木马网站怎么做广州网站优化页面
  • 做网站服务器电脑配置个人主页网页设计
  • 阿里域名seo关键词排名怎么优化
  • 免费网站app哪个最好靠谱的免费建站
  • 中邮保险网站福州关键词排名优化