Vue基础回顾(3)

87 阅读1分钟

生命周期

lifecycle.png

2222.webp

beforeCreate( 创建前 )

在实例初始化之后,此时组件的选项对象还未创建,el和data并未初始化,因此无法访问methods,data,computed等上的方法和数据。

create(创建阶段)

在创建阶段,执行data数据注入、data数据劫持,遍历data选项,用Object.definePropoty()给每个data选项添加set和get方法,把劫持的变量都放在组件实例上。

beforeMount(挂在前)

通过el,template寻找视图组件,把找到的template视图编译成render函数。

mounted(挂载)

根据render渲染函数,生成"抽象语法树AST",AST第一次被创建成虚拟DOM(VNode),根据VNode创建真实DOM把那些声明式变量替换成真实数据,至此dom渲染完成。

updated(更新)

当被劫持过的data数据发生变化时,就进入该阶段。data发生变化,render函数将再生成一个新的VNode,然后diff算法就会通过patch找出两个VNode之间的最小差异,然后notify再通过Wather根据"依赖收集"再次更新真实DOM。