Vue.js 实例挂载的过程是指在 Vue 实例生命周期中的 `mounted` 钩子执行的过程

49 阅读2分钟

1. 初始化阶段(Initialization):

  • Vue 实例被创建,初始化了一些内部数据和生命周期钩子。
  • 执行 beforeCreate 钩子。

2. 数据响应式(Data Observation):

  • 初始化数据响应式系统,将 data 对象中的属性转换成 gettersetter,实现数据的双向绑定。
  • 执行 created 钩子。

3. 模板编译(Template Compilation):

  • 如果 Vue 实例中定义了 template 选项,将模板编译成渲染函数。
  • 如果没有提供 render 函数,将编译的渲染函数赋值给实例的 $options.render

4. 挂载阶段(Mounting):

  • 将 Vue 实例挂载到指定的元素上,执行 $mount 方法。
  • 如果未提供 el 选项,则需要手动调用 $mount 方法挂载。
  • 如果提供了 el 选项,Vue 将查找该元素,并将实例挂载到该元素上。

5. 编译和挂载过程(Compilation and Mounting):

  • 如果提供了渲染函数 render,则跳过模板编译步骤,直接进入下一步。
  • 如果没有提供 render 函数,则使用编译生成的渲染函数。

6. 首次渲染(First Render):

  • 执行渲染函数,得到虚拟 DOM。
  • 将虚拟 DOM 转换为真实 DOM,将其插入到页面中。
  • 执行 mounted 钩子,表示实例已经挂载到 DOM 上。

7. 更新阶段(Update):

  • 当数据发生变化时,触发数据响应式系统,重新生成虚拟 DOM。
  • 新的虚拟 DOM 与之前的虚拟 DOM 进行对比(diff 算法),找出变化的部分。
  • 将变化的部分更新到真实 DOM 上,完成页面的更新。

8. 销毁阶段(Destroy):

  • 当调用 $destroy 方法或实例销毁时,执行 beforeDestroy 钩子。
  • 解绑数据监听,清除定时器等清理工作。
  • 最后执行 destroyed 钩子,表示实例已经被销毁。

这是 Vue.js 实例挂载的基本过程。在挂载过程中,mounted 钩子是一个重要的时机,通常在这个阶段进行一些需要在 DOM 渲染完成后执行的操作,比如请求数据、操作 DOM 等。整个生命周期过程保证了 Vue 实例在不同阶段能够执行相应的逻辑,使开发者能够更灵活地处理不同的场景。

当我们创建一个 Vue.js 实例并把它连接到页面上时,整个过程就像搭建一座房子一样。我们可以分解这个过程成几个步骤:

  1. 设计房子的图纸(Initialization):

    • 在这一步,我们创建了 Vue 实例,就像设计一座房子的图纸一样。这时候我们还没开始建造房子,只是在规划和准备。
  2. 准备建材和工人(Data Observation):

    • 接下来,我们需要准备建造房子所需的材料和工人。在 Vue 中,我们准备了数据和生命周期钩子。数据是房子的各种属性,而生命周期钩子是工人的工作流程。
  3. 根据图纸建造房子(Template Compilation):

    • 如果我们提供了 HTML 模板(房子的设计图纸),Vue 会把它编译成一个能够理解的形式。这就相当于根据图纸来建造真正的房子。
  4. 找个地方把房子建起来(Mounting):

    • 接下来,我们要把房子放到指定的地方。在 Vue 中,我们用 $mount 方法将 Vue 实例连接到我们的网页上,就好像把房子搬到指定的地块。
  5. 将房子建起来(Compilation and Mounting):

    • 如果我们提供了渲染函数(相当于房子的设计图纸),Vue 会使用这个函数来构建房子。如果没有提供,Vue 会用自动生成的渲染函数来建造房子。
  6. 第一次欣赏新房子(First Render):

    • 房子建好了,我们可以欣赏它了!在 Vue 中,这个过程就是渲染函数执行的过程。Vue 会把房子(实际上是虚拟房子,类似于模型)渲染成真实的房子(真实的 DOM 元素),并把它放到网页上。
  7. 房子装修(Update):

    • 如果我们想要改变房子的颜色或者其他部分,就需要更新它。在 Vue 中,当数据发生变化时,Vue 会重新构建虚拟房子,并找出变化的部分,然后更新真实的房子。
  8. 卸载房子(Destroy):

    • 如果我们不再需要这座房子,可以选择把它拆掉。在 Vue 中,调用 $destroy 方法或者实例被销毁时,Vue 会解除数据监听,清理工作,就好像在拆房子一样。

总体来说,Vue.js 实例挂载的过程就是设计、准备、建造、欣赏、更新和拆除一座房子的过程。这个过程保证了我们可以方便地管理和操作我们的应用,就像搭积木一样。