vue生命周期(Life Cycle)函数详解

本文详细解析了Vue.js中的生命周期概念,包括创建、运行和销毁三个主要阶段。通过具体示例介绍了各个阶段的重要函数及其应用场景。

生命周期函数

某一时刻 自动执行 的函数

生命周期是什么

生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实例从创建到销毁的过程就是生命周期,即指从创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程我们可以把组件比喻成工厂里面的一条流水线,每个工人(生命周期)站在各自的岗位,当任务流转到工人身边的时候,工人就开始工作。

生命周期有哪些

Vue生命周期总共可以分为8个阶段:创建前后, 载入前后,更新前后,销毁前销毁后,以及一些特殊场景的生命周期,今天我们主要讲常使用的八个钩子函数
在这里插入图片描述

生命周期整体流程

在这里插入图片描述

在这里插入图片描述

接下来我们从以下三个阶段进行解读生命周期:

1.创建阶段
2.运行阶段
3.销毁阶段

在这里插入图片描述

在这里插入图片描述

1.创建阶段:

创建Vue的实例对象,初始化。这时候该对象只有默认的一些周期函数和默认事件,其他东西还未创建。
在这里插入图片描述

实例初始化阶段主要有两个函数:

  • beforeCreate()
  • created()

beforeCreate()

在这里插入图片描述

这里我们试着打印data中定义的message和执行handleItemClick方法。打开页面并查看控制台。

在这里插入图片描述
这里报错了,this.handleItemClick is not a function,也就是不可使用,在beforeCreate 生命周期函数执行的时候,data和methods中的数据都没有初始化

created()

接着我们执行遇到的第二个钩子函数created()。
在这里插入图片描述
同样,我们去查看页面和控制台。
在这里插入图片描述在这里插入图片描述

在打印结果中,可以看到在created中,data和methods都已经被初始化好了。
如果要调用methods中的方法,或者操作data中的数据,最早只能在created中操作。

开始编译模板

接下来我们进到生命周期函数中的开始编译模板:
在这里插入图片描述
这里表示Vue开始编译模板,
把vue代码中的那些指令进行执行,最终在内存中生成个编译好的最终模板字符串然后把这个模板字符串,渲染成为内存中的DOM,此时,只是在内存中,渲染好了模板,并没有把模板挂载到真正的页面中去。

挂载模板:

在这里插入图片描述
经过开始编译模板之后就进入了挂载模板,挂载阶段也分beforeMount和mounted两个钩子函数。

beforeMount()

是遇到的第三个生命周期函数,表示模板已经在内存中编译完成了
但是在尚未把模板渲染到页面中去,我们结合代码看,
在这里插入图片描述在这里插入图片描述
这时候虽然在页面中可以显示 “hello world” 字符了,但是在控制台中依然是{{message}}
也就是说,在beforeMount 执行的时候,页面中的元素,还没有被真正替换过来,只是之前写的一些模板字符串。

mounted()

这是遇到的第四个生命周期函数,表示内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了。
在这里插入图片描述在这里插入图片描述

这时候在页面中可以显示 “hello world” 字符了,而且在控制台中也渲染为 “hello world” 字符串了
注意:mounted 是实例创建期间的最后一个生命周期函数,当执行完mounted 就表示 实例已经被完全创建好了,此时,如果没有其他操作的话,这个实例,就静静的躺在我们的内存中,一动不动。

我们的创建阶段的生命周期函数已经完成了,也就是图中的圆形部分。
在这里插入图片描述

2.运行阶段

接下来进入就是运行阶段,也就是下图部分:
在这里插入图片描述
运行阶段主要是两个钩子函数:

  • beforeUpdate()
  • updated()

首先我们先看运行阶段中这两个事件
在这里插入图片描述
①When data changes,意思是当data数据发生改变时
②beforeUpdate()该钩子函数会根据data数据的改变有选择性的触发0至多次

beforeUpdate()

为了更好的看到数据的改变,我们给message数据进行监听,设置一个按钮,点击按钮时改变数据,将事先设好的“hello world”改为“No”.
在这里插入图片描述
点击修改message
在这里插入图片描述在这里插入图片描述

出结论:

当执行beforeUpdate的时候,页面中显示的数据还是旧的,
此时data数据是最新的,页面尚未和最新的数据保持同步

updated()

同样,我们在updated()钩子函数中执行上一步的操作
在这里插入图片描述

看看打印结果:
在这里插入图片描述

点击按钮后
在这里插入图片描述在这里插入图片描述
这时候我们可以看到界面上元素的内容和data中message的数据都是No
也就是说updated事件执行的时候,页面和data数据已经保持同步了,都是最新的。

经过上面两个钩子函数的操作,运行阶段的生命周期函数完成了:

在这里插入图片描述
最后就会进入到销毁阶段的生命周期函数:
同样的他们也有两个钩子函数:

  • beforeDestory()
  • destoryed()

销毁阶段的钩子函数我们了解就好了。

beforeDestroy()

当执行beforeDestoy钩子函数的时候,Vue已经从运行阶段进入到了销毁阶段;
当执行beforeDestory的时候,实则身上所有的data和所有的methods,以及过滤器、指令等,都处于可用状态,此时还没有真正执行销毁的过程。

destroyed()

当执行到destoryed函数的时候,组件已经完全销毁了,此时,组件中所有的data、methods、指令、过滤器等,都已经不可用了。
完全销毁一个实例。可清理它与其它实例的连接,解绑它的全部指令及事件监听器
并不能清除DOM,仅仅销毁实例。

经过代码的辅助理解,我们再回头看看整个图的过程,应该会更加清晰了吧。
在这里插入图片描述
Vue生命周期函数理解并不难,也是和代码一样至上而下执行,一步步执行。

表格总结

在这里插入图片描述

### 软件开发生命周期方法学详解 软件开发生命周期(Software Development Life Cycle, SDLC)是一种系统化的框架,旨在通过一系列定义良好的流程来设计、开发和测试高质量的软件。这种方法学的核心目标是以高效的方式满足业务需求,并确保最终产品的可靠性和质量。 #### 1. 定义与核心要素 SDLC 提供了一种分阶段的方法论,涵盖了从最初的需求收集到最后的产品维护或退役的过程[^1]。以下是其主要阶段: - **规划阶段**:此阶段的目标是识别项目的范围和可行性研究,制定详细的计划以指导后续工作。 - **需求分析**:深入理解客户需求,形成正式的需求文档作为开发的基础。 - **设计阶段**:依据需求规格说明书创建系统的架构图和技术设计方案,决定技术栈的选择以及整体布局。 - **实施/编码**:开发者按照既定的设计方案编写代码,在这一过程中会遵循特定的标准和最佳实践。 - **测试阶段**:验证所构建的应用程序是否符合预期功能并修复发现的所有缺陷。 - **部署**:将完成并通过验收测试后的应用程序发布至生产环境供实际使用。 - **维护和支持**:持续监控运行状况并对新出现的问题作出响应调整直至达到生命周期终点为止。 #### 2. 方法学的优势 采用 SDLC 不仅可以提高效率减少成本支出还能增强团队协作能力促进沟通交流从而降低风险提升产品质量。 #### 3. 生命周期中的具体实例——Vue.js 组件生命周期前端领域中,像 Vue 这样的框架也实现了自己的组件级生命周期机制。这些钩子函数允许开发者精确控制组件的行为变化时刻点比如当组件被首次渲染进入 DOM 树时(`mounted`)或者每当数据发生变化重新计算视图之前(`beforeUpdate`)[^2]。这种细粒度的操作权限极大地提高了灵活性同时也简化了许多复杂场景下的逻辑处理难度。 #### 4. 对象销毁的重要性 除了关注如何有效建立外还需要考虑适时拆除不再使用的部分以免造成不必要的消耗例如内存泄露等问题因此引入了析构函数的概念专门负责清理资源回收等工作保证程序健康稳定运转下去[^3]. #### 5. 数据管理视角下的生命周期思考 针对企业内部多样复杂的 IT 应用体系而言统一管理和标准化各类基础元数据变得尤为重要这便是所谓的主数据管理(MDM)策略其中贯穿始终的就是围绕着各个实体对象全生命历程展开的一系列操作规程包括但不限于创建读取修改删除等动作序列以便更好地服务于上层业务逻辑运算需求同时保持一致性准确性及时效性等方面表现良好[^4]. #### 结语 综上所述无论是宏观层面的整体项目推进还是微观细节上的单个模块运作都离不开科学合理的生命周期管理模式只有这样才能真正意义上达成预定的战略目的即快速精准地交付令人满意的解决方案成果物. ```javascript // 示例代码展示 Vue生命周期钩子 new Vue({ el: '#app', data() { return { message: 'Hello World!' }; }, beforeCreate() { console.log('Before Create'); }, created() { console.log('Created'); }, mounted() { console.log('Mounted'); } }); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子的多啦A梦

你的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值