? ? ?vm的一生(vm生命周期):
? ? ? ? 将要创建 →? beforeCreate()
? ? ? ? 创建完毕 → created()
? ? ? ? 将要挂载 → beforeMount ()
? ?※? 挂载完毕?→ mounted()
? ? ? ? 将要更新 → beforeUpdate()
? ? ? ? 更新完毕 → updated()
? ?※??将要销毁 → beforeDestroy()
? ? ? ? 销毁完毕 → destroy()
?????????init(初始化:生命周期、事件、但数据代理还未开始)
- beforeCreate:此时,无法通过vm访问到data中的数据和methods中的方法。
? ? ? ? init(初始化:数据监测、数据代理)
- created:此时,可以通过vm访问到data中的数据和methods中配置的方法。
? ? ? ? 此阶段Vue开始解析模块,生成虚拟DOM(内存中),页面还不能显示解析好的内容。
- befireMount:此时:1.页面呈现的是未经Vue编译的DOM结构。2.所有对DOM的操作最终都不奏效。
? ? ? ? Create vm.$el and replace 'el' with it:将内存中的 虚拟DOM 转为 真实DOM 插入页面。
- mounted: 此时:1.页面中呈现的是经过Vue编译的DOM。2.对DOM的操作均有效(尽可能避免)。至此初始化过程结束,一般在此进行:开启定时器、发送网络请求、订阅消息、绑定自定义事件、等初始化操作。
- brforeUpdata:此时,数据是新的,但页面是旧的,即:页面尚未和数据保持同步。
? ? ? ? Virtual DOM re-render and path:根据新数据,生成新的虚拟DOM,随后与旧的虚拟DOM进 行比较,最终完成页面的更新,即:完成Model → View的更新。
- updated:此时,数据是新的,页面也是新的,即:页面和数据保持一致。
- beforeDestroy:此时,vm中所有的(data、methods、指令......),都处于可用状态,马上要执行销毁过程,一般在此阶段:关闭定时器、取消订阅消息、解绑自定义事件等收尾操作 。
- destroyed :?所有指令都被解绑,所有的事件监听器被移除,所有的子实例也都被销毁。
常用的生命周期钩子:
- mounted:发送ajax请求、启动定时器、绑定自定义组件、订阅消息等(初始化操作)。
- beforeDestroy:清除定时器、解绑自定义事件、取消订阅消息(收尾工作)。
关于销毁vue实例:
- 销毁后借助vue开发者工具看不到任何信息;
- 销毁后自定义事件会销毁,但原生DOM事件依然有效;
- 一般不会在beforeDestroy操作数据,因为操作数据不会再触发更新流程。
|