vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解注意 项目讲解案例参照之前的博客 如有不理解的地方 请按 vue 学习总结顺序查看 如果从头到尾仔细阅读过我之前博客的朋友可能发现 我在讲 vue 生命周期的时候并没有详细的去讲 activated 以及 deactivated 这两个生命周期函数 在接下来的这篇博客中会为大家揭开它的神秘面试 我会把列表页好详情页的数据替换成动态请求的数据 而不是写死在 data 函数里面 当然因为没有接口 我只能通过本地的

注意:项目讲解案例参照之前的博客,如有不理解的地方,请按vue学习总结顺序查看。

如果从头到尾仔细阅读过我之前博客的朋友可能发现,我在讲vue生命周期的时候并没有详细的去讲activated以及deactivated这两个生命周期函数,在接下来的这篇博客中会为大家揭开它的神秘面试。

我会把列表页好详情页的数据替换成动态请求的数据,而不是写死在data函数里面,当然因为没有接口,我只能通过本地的json数据来模拟

 

首页修改一下config文件夹下面的index.js文件里面的配置,如下:

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

其次,我们要用到数据请,在这里我采用vue官方推荐的axios插件,执行命令npm install axios

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

此时axios已经安装成功了,我们可以在list页面发起网络请求了(请求的是本地的istatic文件夹下的ndex.json文件)

//static-->mock-->index.json { "ret": true, "data": { "list": [{ "id": "1", "name": "苹果", "detail":"" },{ "id": "2", "name": "香蕉" },{ "id": "3", "name": "梨子" },{ "id": "4", "name": "葡萄" },{ "id": "5", "name": "哈密瓜" },{ "id": "6", "name": "西瓜" },{ "id": "7", "name": "橙子" }] } } 

list.vue代码如下:

 
    
    

再看看页面是否请求到了数据,打开页面的network,查看网络请求如下:

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

我们可以看出请求已经成功,并且页面页渲染了,但是我们在反复进入列表页面看看会发生什么情况?

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

 

由此可知,用户每次进入页面都会发起一个请求,这样对网页性能优化是不利的,那怎样可以避免这种情况呢?vue推荐在
组件上面包裹一层keep-alive组件,如图:

 //App.vue 
     

接下来我么你在看看反复进入list页面还会不会发起网络请求:实践证明无论进入多少次列表页都只会发起一起请求,这样在数据没有发生改变的情况下可以大大降低网络请求的时间从而提高网站性能

vue学习总结六:keep-alive用法以及activated,deactivated生命周期的讲解

 

我们再思考一下,虽然这样我们把所有的页面都基于缓存了不用发起第二次请求,但是对于某些页面来说,如动态路由,需要根据接收的不同参数来获取不同的数据那怎么办呢?

其实vue2.0版本后,keep-alive内置组件已经封装了两个属性,include和exclude表示那些组件需要缓存那些组件不需要缓存,用法大致如下:

 
   
    
    
   
   
    
    
   
   
   
    
   
   
   
    
   
   
    
    
   

还有一种方法我们可以动态配置路由,来确定那些路由需要缓存哪些不需要缓存,这样的话就需要修改route文件下的index.js文件:

 import Vue from 'vue' import Router from 'vue-router' /*import Home from '@/containers/home/index' import List from '@/containers/list/index' import Detail from '@/containers/detail/index' import Person from '@/containers/person/index'*/ const Home = resolve => require(['@/containers/home/index'], resolve); const List = resolve => require(['@/containers/list/index'], resolve); const Detail = resolve => require(['@/containers/detail/index'], resolve); const Person = resolve => require(['@/containers/person/index'], resolve); Vue.use(Router); export default new Router({ routes: [ { path: '/', name: 'Home', component: Home , meta: { keepAlive: true // 需要被缓存 } },{ path: '/list', name: 'List', component: List, meta: { keepAlive: true // 需要被缓存 } },{ path: '/detail', name: 'Detail', component: Detail, meta: { keepAlive: false // 不需要被缓存 } },{ path: '/person', name: 'Person', component: Person, meta: { keepAlive: true // 需要被缓存 } }, ] }) 

然后在app,vue文件下修改一下keep-alive组件的用法,这样是不是写起来很方便呢?

 //App.vue 
     

注意一点:activated,deactivated这两个生命周期函数一定是要在使用了keep-alive组件后才会有的,否则则不存在

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201720.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:45
下一篇 2026年3月20日 上午8:46


相关推荐

  • java 软件运维面试题_运维面试题(一)

    java 软件运维面试题_运维面试题(一)一基础知识1什么是linux的daemon进程?和一般进程有什么区别?daemon进程又称为守护进程,是在系统启动就运行,系统关闭才停止的进程,独立于终端之外,不与客户端交互。一般进程在关闭终端后就停止了,而daemon进程不会停止。2通过free命令查看内存是,看到的buffer和cache各表示什么含义?Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲…

    2022年6月9日
    53
  • sigprocmask sigaction

    sigprocmask sigaction sigprocmask:用于随时添加信号屏蔽字;sigaction :signal增强版本,当处理信号时,可以随意添加信号屏蔽字sigset_tnewmask,oldmask,pendmask;signal(SIGINT,sig_handler);sigemptyset(&newmask);sigaddset(&…

    2022年5月26日
    45
  • .net 平台常用控件

    .net 平台常用控件分布式缓存框架:MicrosoftVelocity:微软自家分布式缓存服务框架。Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。Redis:是一个高性能的K

    2022年7月2日
    29
  • 设备驱动外传 – 虚拟总线和platform device「建议收藏」

    设备驱动外传 – 虚拟总线和platform device「建议收藏」1.总论2.系统初始化platformdevice3.驱动程序使用platformdevice   1.总论Linux-2.6.11引入了设备模型的概念,将大部分设备驱动挂载到虚拟总线上。其目的在于:1)提供友好的用户接口,用户可以在sys/bus/platform/下找到相应的驱动和设备。2)更有利于电源管理。  2

    2022年7月24日
    11
  • 不就是Java编程嘛,来来来

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开! …

    2022年2月28日
    38
  • macOS历史版本[通俗易懂]

    macOS历史版本[通俗易懂]Catalina(10.15)正式版下载链接:https://apps.apple.com/cn/app/macos-catalina/id1466841314?mt=12Mojave(10.14

    2022年8月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号