生命周期
开始创建、初始化数据、编译模板、挂载 Dom、渲染 → 更新 → 渲染、激活、移除、销毁
el 优先级
- render 函数选项 > template 参数 > 外部 HTML
过程
- new Vue() 初始化实例
- beforeCreate() (数据/计算属性/方法 未初始化, Dom 未挂载)
- 初始化 数据/计算属性/方法
- created() (数据/计算属性/方法 已初始化, Dom 未挂载)
- 查找对应的模板,编译模板为虚拟 Dom
- beforeMounted() (数据/计算属性/方法 已初始化, Dom 未挂载)
- 挂载 Dom
- mounted() (数据/计算属性/方法 已初始化, Dom 已挂载)
更新
- 首先触发 watch
- 再触发 beforeUpdate()
- 再触发 updated()
- beforeUpdate(), updated()中不能更改数据,否则会陷入死循环
激活
- activated() -> for keep-alive,组件被激活时调用
- deactivated() -> for keep-alive,组件被移除时调用
销毁
- $destroy 方法被调用的时候就会执行 beforeDestroy() destroyed()
- 一般 beforeDestroy()善后, destroyed()也可以:清除计时器、清除非指令绑定的事件等等
- 数据和方法还存在,但无法操作 Dom 了