0%

Vue实例挂载发生了什么

  • new Vue 的时候调用_init方法
  1. 定义$set,$get,$delete,$watch等方法
  2. 定义$on,$off,$emit等事件
  3. 定义_update,$forceUpdate,$destroy生命周期
  • 调用$mount进行页面的挂载,会解析template:
  1. 将html文档解析后生成ast抽象语法树
  2. 将ast解析成字符串
  3. 生成render函数,挂载到vm上后,会再次调用mount方法
  • mount方法中
  1. 会调用mountComponent渲染组件
  2. 执行beforeMount钩子
  3. 定义updateComponent渲染页面视图方法(updateComponent方法主要执行在vue初始化声明的render,update方法,render的作用是生成vnode)
  4. 监听组件数据,一旦发生变化,触发beforeUpdate生命钩子
  • _update主要功能是调用patch,将vnode转换为真实DOM,并且更新到页面中

参考链接:

https://vue3js.cn/interview/vue/new_vue.html#%E4%B8%89%E3%80%81%E7%BB%93%E8%AE%BA