以下仅为个人理解。
从创建Vue实例,到销毁是一个完整的生命周期过程,每个过程中又包含着不同的阶段,每个阶段完成不同的功能。
初始化:生命周期、事件,但数据代理还未开始。
初始化:数据监测、数据代理
解析模板,根据模板生成虚拟DOM,页面还没有加载经过Vue编译的DOM。此阶段可以修改DOM数据,但是在下一阶段来临会覆盖掉,修改不起作用。
挂载经过Vue编译的真实DOM,并保存一份儿虚拟DOM。在此时可以开启定时器、发送网络请求等操作。至此,整个初始化挂载的阶段完成。
如果新旧数据一样,则不会进入此阶段。
在页面进行数据更新操作,会进入先beforeUpdate,此时后台的数据已经发生改变,但是页面没有显示,也就是还没有完全更新。
此时在做什么呢?主要是根据更改的数据生成新的虚拟DOM,新旧DOM进行对比,做好页面要更新的准备。
更新完成,数据更新,页面也更新。
调用vm.$destroy会进入销毁过程,这个过程也有两个阶段。
在这个阶段开始准备销毁,数据、方法、指令等还可以使用,但是只可以获取到,没办法响应,也就是不能继续更新,页面不会再刷新。
在此阶段可以关闭定时器等操作。
完全销毁。
销毁后的页面依旧残留,死页面,Vue不存在。