vue生命周期的执行过程
- 首先创建一个vue实例,Vue()
- 在创建Vue实例的时候,执行了init(),在init过程中首先调用了beforeCreate。
- Created之前,对data内的数据进行了数据监听,并且初始化了Vue内部事件。具体如下:
- 完成了数据观测;
- 完成了属性和方法的运算;
- 完成了watch/event事件的回调;
- 但是此时还未挂在dom上,$el属性是不可见的;
- beforeMount之前,完成了模板的编译。把data对象里面的数据和vue的语法写的模板编译成了html,但是此时还没有将编译出来的html渲染到页面;
- 1、在实例内部有template属性的时候,直接用内部的,然后调用render函数去渲染。
- 2、在实例内部没有找到template,就调用外部的html(“el”option(选项))。实例内部的template属性比外部的优先级高。 render函数 > template属性 > 外部html;
- 3、要是前两者都不满足,那么就抛出错误。
- Mounted之前执行了render函数,将渲染出来的内容挂载到了DOM节点上。mounted是将html挂载到页面完成后触发的钩子函数;当mounted执行完毕,整个实例算是走完了流程;在整个实例过程中,mounted仅执行一次;
- beforeUpdate:数据发生变化时,会调用beforeUpdate,然后经历virtual DOM,最后updated更新完成;
- beforeDestory是实例销毁前钩子函数,销毁了所有观察者,子组件以及事件监听;
- destoryed实例销毁执行的钩子函数;