init
在初始化的时候会调用_init的方法,在init方法会初始化一下内容的内容
initLifecycle
- 设置$parent为第一个非抽象类的父节点
- 设置$root
- 初始化$children = []
- 初始化$refs = []
- 初始化私有属性 _provided为当前组件的父节点的_provided
- 初始化 _watcher
- 初始化 _inactive 动态组件
- 初始化 _directInactive为false
- 初始化 _isMounted为false
- 初始化 _isDestroyed为false
- 初始化 _isBeingDestroyed为false
initEvents
- 初始化_events为null
- 初始化_hasHookEvent为false
initRender
- 初始化虚拟节点_vnode
- 初始化静态节点属性_staticTress
- 开始收集$slots
- 开始初始化$scopedSlots
- 新增实例函数
$createElement和_c为同一个函数 - 定义
$attr和$listener为响应式数据
执行钩子函数beforeCreate
initInjections
- 将注入inject定义为响应式数据
- 开启对象的递归响应式
initState
- 初始化组件的属性props
- 初始化组合式api的setup
- 初始化选项式api的method
- 初始化选项式api的data
- 初始化选项式api的computed
- 初始化watch
initProvide
执行钩子函数created
当$options.el存在执行$mount
- 判断渲染函数是否存在,如果不存在, 初始化render为空的虚拟节点
- 执行beforeMount的钩子函数
- 更新组件
- 新增钩子函数beforeupdate
- 执行钩子函数mounted
≡