vue生命周期

64 阅读1分钟

生命周期图解

image.png

第一个环节

  • 里面定义了生命周期函数,和一些事件规则,data里面定义的数据还没有开始代理;
  • 验证beforeCrete,没有数据代理和methods方法;

第二个环节

  • 初始化数据监测和数据代理;
  • vue如何检测数据变化的,如何检测数组变化的,给对象里面的属性匹配get和set的,都是在这个环节完成的;
  • 那么就意味着可以访问到data里面的数据和methods里面的方法;

判断环节

  • 是否有‘el’这个配置项,new vue的时候是否传el这个配置项了,看一下代码;
  • 是否有template配置项,没有,往下走;
  • 编译el的HTML作为一个模板,如果是模板就会解析,如果不是模板就不会解析,:x='name'
  • 此时这个方块里面的内容就是解析模板,就是写的一些插值语法和click事件等,都会解析了;并生成了虚拟DOM,还在内存中,还没有变成真是的DOM,就是展示原始的内容,没有解析的内容;
  • beforeMount,挂载之前,已经编译了,但是页面还没有展示; beforeMount() { console.log('---------------->beforeMount'); document.querySelector('h2').innerText = '哈哈' debugger },
  • 最终都不奏效
  • 在控制台document.querySelector('h2').innText = "哈哈"
  • 断点放下去,试一下;
  • 因为无论刚才怎么改,下一步都是把虚拟DOM改完转为真实DOM插入页面了,
  • 如果写在代码里根本就看不到那个状态

转成真是DOM插入页面

  • 调用mounted钩子,挂载完毕;

虚拟dom存在$el里面

更新的流程

自我毁灭

image.png