Vue的生命周期

Vue实例从创建到销毁的过程就是生命周期,既指从创建、初始化数据、编译模板、挂载DOM到渲染、更新渲染、销毁等一系列过程,他主要分为8个阶段,创建前后、载入前后、更新前后、销毁前、销毁后、以及一些特殊场景的生命周期。

官方给出的图示:

第一步:Init Events& Lifecycle:事件和生命周期钩子初始化,此时数据代理未开始。

第二部:Init injections&reactivity:初始化inject provide state,开启数据监测,数据代理

第三步:Has 'el' option:是否有el对象 没有挂载

第四步:Has 'template' option:是否有模板:

        有则走Compile template into render funcation,将模板转化为render函数,通过render函数去渲染创建dom树,

        没有则走Compile 'el's outerHtml as template,编译el对象作为html作为模板。

此阶段Vue开始解析模板,生产虚拟DOM(内存中),页面还不能显示解析好的内容。

第五步:Create vm.$el and replace 'el' with it:创建Vue实例下辖的$el(虚拟)并将其替换真正的dom,将内存中的虚拟DOM转为真实DOM插入页面。

第六步:Mounted:挂在完毕,此阶段实时监控data里面的数据变化,以便随时更新。当属就被修改时触发Virtual DOM re-render and patch:根据新数据,生产新的虚拟DOM,随后与旧的虚拟DOM进行比较,最终完成页面更新。虚拟DOM重新渲染并应用更新。

第七步:调用vm.$destroy()函数时,准备销毁,执行Teardown watchers.child components and event listeners:接触绑定销毁子组件以及事件监听者。

第八步:Destroyed:组件已销毁。

在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。

BeforeCreate:在组件实例化初始化完成之后立即调用。此时,无法通过vm访问到data中的数据、methods中的方法,

Created:在组件实例处理完所有与状态相关的选项后调用。此时,可以通过vm访问data中的数据,methods中配置的方法。此时挂载阶段还未开始,$el属性不可用。

BeforeMount:在组件被挂载之前调用。此时$el属性可用,页面呈现的时未经Vue编译的DOM结构。所有对DOM的操作,最终都不奏效。

Mounted:在组件被挂载之后调用。此时,页面中呈现的时经过Vue编译的DOM。对DOM的操作均有效(尽可能避免)。至此初始化过程结束,一般在此进行:开启定时器、发送网络请求,订阅消息、绑定自定义事件、等初始化操作。

BeforeUpda:在组建即将因为一个响应式状态变更而更新其DOM树之前调用。此时,数据时新的,但页面是旧的,即:页面尚未和数据保持同步。

Updated:在组件因为一个响应式状态变更而更新其DOM树之后调用。此时:数据是新的,页面也是新的,即L页面和数据保持同步。

BeforeDestroy:销毁前,可用于一些定时器或订阅的取消。此时,VM中所有的:data、methods、指令等等都处于可用状态,马上要执行销毁过程,一般在此阶段:关闭定时器,取消消息订阅消息、解绑自定义事件等收尾操作。

Destroyed:完全销毁一个实例,可清理它与其他实例的连接,解绑它的全部指令以及事件监听器并不能清除DOM,仅仅销毁实例。

最后需要说明一下Created和mounted的区别:

Created:是在组件实例一旦创建完成的时候立即调用,这时候页面dom节点并未生成。

Mounted:是在页面dom节点渲染完毕之后就立即执行的,created的触发时机要比mounted更早一些。

两者的相同点都是可以拿到实例对象的属性和方法,但是如果放在mounted请求有可能导致页面闪动,但如果在页面加载前完成则不会出现此情况。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值