vue生命周期
为什么会产生vue
生命周期?因为有new Vue()
,我们使用了vue
,生命周期的作用:让开发者在vue
实例创建,运行,销毁的时间节点插入自己的代码,特定的时间节点就是生命周期钩子。
生命周期本质就是函数。
挂载流程
1.beforeCreate
,此时,初始化生命周期,数据代理未开始。无法通过vm
访问到data
中的数据,methods
的方法。
2.created
此时,数据监测(vue
监测数组,对象变化,对象里面属性匹配getter
,setter
),数据代理,可以通过vm
访问到data
里面的数据,methods
配置的方法。
接下来就判断是否有el配置项,如果有就开始判断是否有template配置项,如果没有就是一直等,等到vm.$mount(el)
才会去往下执行。接下来就是判断是否有template配置项,如果没有就编译el
绑定的元素,如果有就编译里面的模板到render函数里面。整个这个阶段vue
开始解析模板(就是解析html元素的内容,如果说v-on ,v-bind之类的)生成虚拟DOM
(内存中),页面不会显示解析好的内容。
3.beforeMount
此时,页面呈现的是未经Vue
编译的DOM
,对所有DOM
操作最终都不奏效。
4.Mounted
此时,将内存中的虚拟DOM
转为真实DOM
插入页面中,页面中呈现的是经过Vue
编译的DOM
。对DOM
的操作均有效,至此初始化过程结束,一般在此进行:开启定时器,发送网络请求,订阅消息,绑定自定义事件等初始化操作。
更新流程
5.beforeUpdate
此时,数据是新的,但页面是旧的,即:页面尚未和数据保持同步。
6.updated
此时,根据新数据,生成新的虚拟DOM
,随后与旧的虚拟DOM
进行比较,最终完成页面更新,model→view的更新,此时数据是新的,页面也是新的,即:页面和数据保持同步。
销毁流程
调用vm.$destory()
完全销毁一个实例,清理它与其他实例的连接,解绑它的全部指令以及自定义事件监听器,但是原生DOM
的事件存在(比如v-on事件存在)。
7.beforeDestory
此时,vm
所有的:data,methods, 指令等,都处于可用状态,马上要执行销毁过程,一般在这个阶段,关闭定时器,取消消息订阅,解绑自定义事件等收尾工作。
8.destroy
此时,移除所有的监视和子组件和事件监听器。
图片来源尚硅谷。
标签:生命周期,DOM,vm,vue,此时,页面 From: https://blog.csdn.net/m0_73918807/article/details/144276817