美文网首页
Vue生命周期初探

Vue生命周期初探

作者: LinkVoid | 来源:发表于2019-06-17 16:25 被阅读0次

本来想从这就开始写关于vue的模板语法的,但是思前想后,觉得还是应该先学习一下vue的完整生命周期,随便写一下,想到哪儿就写到哪儿。

先写一下页面显示的几个阶段。

1.生成DOM树(包括display:none的节点)。

2.在DOM树的基础上根据节点的属性生成Render树(不包括display:none,head节点,包括visibilty:hidden的节点)

3.在render树的基础上继续渲染颜色,背景色等样式。

每个 Vue 实例在被创建时都要经过一系列的初始化过程。

这个完整的生命周期图片太长了,我们从每一个钩子截图看一下。

1.beforeCreate

beforeCreate

实例或组件通过new Vue() 创建出来之后会初始化事件和生命周期,然后就会执行beforeCreate钩子函数,这个时候,数据还没有挂载,无法访问到数据和真实的dom,我们一般不会在此处进行任何操作。

2.created

created

在执行完成beforeCreate之后,vue会进行初始化事件,进行数据的观测,在这时数据已经和data的属性绑定了,你改变data的属性,同时视图也会随着更新。我们一般在这个钩子里获取数据进行初始化。

这时还没有$el

3.beforeMount

beforeMount

这个阶段发生了很多事情。

首先会判断对象是否有el选项。如果有的话就继续向下编译,如果没有el选项,则停止编译,也就意味着停止了生命周期,直到在该vue实例上调用vm.$mount(el)才继续向下走。

在这个函数中虚拟Dom已经创建完成,马上开始render()

为什么先判断el然后判断template?

vue需要通过el找到对应的outer template

渲染的优先级如下:

render函数选项 > template选项 > outer HTML. 

4.mounted

mounted

在mounted之前,template模板中还是通过{{data}}进行占位的,因为此时还没有挂在真实dom上,还是以JS中的虚拟dom存在的。
接下来开始render(),渲染出真实dom,然后执行mounted钩子函数,此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom。

4. beforeUpdate &updated

beforeUpdate &updated

当vue发现data中的数据发生了改变,会触发对应组件的重新渲染,先后调用beforeUpdateupdated钩子函数。

vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染。

当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom。

4.  beforeDestroy  & destroyed

beforeDestroy  & destroyed 

beforeDestroy钩子函数在实例销毁之前调用。在这一步,实例仍然完全可用。我们在这一步一般进行一些清除定时器一类的操作。

destroyed钩子函数在Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

相关文章

  • Android程序员初探Vue(二):项目结构

    系列文章Android程序员初探Vue(一):环境搭建(Vue2.0)Android程序员初探Vue(二):项目结...

  • Android程序员初探Vue(一):环境搭建(Vue2.0)

    系列文章Android程序员初探Vue(一):环境搭建(Vue2.0)Android程序员初探Vue(二):项目结...

  • vue生命周期

    一 vue生命周期 Vue的生命周期:就是vue实例从创建到销毁的全过程 二 vue生命周期钩子 vue生命周期...

  • vue生命周期

    vue生命周期详: vue生命周期详解图: vue生命周期详解代码展示:

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • Vue生命周期初探

    本来想从这就开始写关于vue的模板语法的,但是思前想后,觉得还是应该先学习一下vue的完整生命周期,随便写一下,想...

  • Vue生命周期初探

    前言 生命周期的概念在 React、Vue、小程序等开发环境里是一个不可避免且极为重要的概念。生命周期其实针对整个...

  • vue3较vue2的特别之处 - 生命周期

    vue2 生命周期 vue3 生命周期 将 Vue2 的生命周期钩子代码更新到 Vue3 参考地址:https:/...

  • 前端之路-VUE面试题

    vue生命周期面试题vue 生命周期是什么? Vue 实例从创建到销毁的过程,就是生命周期 beforeCreat...

  • Vue.js入门(二):生命周期

    1 生命周期 Vue生命周期是Vue实例从创建到销毁的过程,就是生命周期。在Vue实例的生命周期过程中会运行生命周...

网友评论

      本文标题:Vue生命周期初探

      本文链接:https://www.haomeiwen.com/subject/nibafctx.html