new Vue() --->初始化生命周期,事件,但是未进行数据代理---->beforeCreated()------>初始化进行数据监测和数据代理--->created()这个时候可以访问到data中的数据以及methods中的方法---->如果有模板,则通过模板生成虚拟dom但是还没有渲染到页面如果没有模板就先生成模板然后在生成虚拟dom---->beforeMounted()这个时候处于待挂载的状态,dom结构还没有进行编译,对dom的操作都是无效的----->将虚拟dom变为真实dom挂载到页面上------>mounted()此时可以操作页面上的dom结构,页面显示的也是编译好的页面---->beforeUpdate()这个时候数据的新的但是页面是旧的---->根据新数据生成新的虚拟dom与旧的虚拟dom进行比较然后更新真实dom然后完成页面更新----->update()---->调用销毁--->beforeDestory()这时候vue实例中的data和methods都可以正常使用、马上套执行销毁操作,一般在这个时候进行定时器关闭解绑自定义事件等操作----->destory()
钩子函数的定义是组件从生成到销毁过程的全过程中,自动执行的暴露出来的函数,可以定义以此来影响组件的生命周期。vue组件的生命周期中有三个阶段,分别是挂载阶段、更新阶段和销毁阶段。挂载阶段有beforecreate、created、beforemount、mounted;更新阶段有beforeupdate与updated;销毁阶段有beforedestory与destoryed。在beforecreate阶段,尚未创建实例,无法访问实例中的属性;created阶段,实例创建完成,可以访问实例中的属性,类似于data、watch、computed等;breforemount阶段,会找到对应的template标签并编译成render函数;mounted阶段,DOM挂载完成,可以访问DOM元素;beforeUpdate,在virtual DOM 打补丁之前执行,适合在这个时候执行解绑某个元素的事件监听器的工作;updated 阶段在虚拟DOM重新渲染与补丁之后使用,DOM已经被更新。beforedestory阶段,在实例销毁前,仍然可以访问this,适合解绑定时器、删除全局监听器等操作;destoryed阶段,组件已经被销毁。如果有使用keep-alive标签,则还会有activated和deactived,分别在keep-alive组件被激活和停用时使用。组件中常存在父子关系,都是先父再子,子完成后,父才完成。