- 执行顺序
- 初始化 生命周期、事件、渲染函数 赋初值
- 调用beforeCreate钩子
- 初始化injection
- 初始化状态数据
初始化props
初始化methods
初始化data
初始化compute
初始化watch - 初始化 provide
- 调用created钩子
- 调用$mount绑定元素el
vm.$el=el
调用beforeMount钩子
绑定组件更新事件 - 调用 mounted钩子
源码:
initLifecycle(vm)
initEvents(vm)
initRender(vm)
callHook(vm, 'beforeCreate')
initInjections(vm) // resolve injections before data/props
initState(vm)
initProvide(vm) // resolve provide after data/props
callHook(vm, 'created')
if (vm.$options.el) {
vm.$mount(vm.$options.el)
}
- 响应式原理
-
通过Object.defineProperty 定义get,set 实现响应式,get 收集添加依赖,set 通知依赖更新
-
通过Dep保存依赖
-
通过Watcher 监听和管理依赖 组件自带渲染Watcher,watch,computed 也会生成Watcher
-
vue 所有更新都保存到更新队列中,通过Promise或者setTimeout 异步更新,清空队列。
源码: