浅谈vue首次渲染全过程

yizhihongxing

当浏览器加载 Vue 应用时,Vue 应用会随即进行一系列的初始化操作,最后通过 mount() 方法将 Vue 实例挂载到文档区域中。下面是Vue首次渲染的完整过程:

准备阶段

创建Vue实例对象

在该阶段,Vue会根据传入的配置项,创建Vue实例对象。在创建实例对象过程中,Vue会做以下工作:

  • 读取 data 属性中的数据,并转为响应式数据
  • 当数据变化时会触发组件的重新渲染
  • 对配置项进行处理,比如对生命周期钩子函数进行初始化等
  • 通过观察者模式与订阅者模式进行绑定,用于更新数据的时候通知对应的 DOM 更新。

下面是一个简单的 Vue 实例示例:

new Vue({
  el: '#app',
  data: {
    message: 'Hello, Vue!'
  }
})

构造 Virtual DOM

在创建 Vue 实例对象完成后,Vue 应用开始构造 Virtual DOM,将将模板转化为 AST,再将 AST 转化为 VNode,最终创建出 Virtual DOM。Virtual DOM 是以 JavaScript 对象的形式表示真实 DOM 的树形结构。

生成真实 DOM 结构

Vue 应用会通过 Virtual DOM,将数据渲染为真实的 DOM。

挂载阶段

将 Virtual DOM 转化为真实 DOM

在完成上述两个步骤后,Vue 应用会接下来对 Virtual DOM 进行 diff 操作,生成一系列操作真实 DOM 对象的列表,对比上次更新的虚拟 DOM 树以及新的虚拟 DOM 树的区别和差异,最终将 Virtual DOM 转为真实 DOM。

完成挂载并首次渲染成功

当整个 Vue 应用的核心实例创建,生成 Virtual DOM,并且将 Virtual DOM 转化为真实 DOM 对象的步骤完成后,Vue 就会一次性将生成的真实 DOM 挂载到应用中。

以下是一个简单的 Vue 应用示例,演示 Vue 实例的生命周期:

<!DOCTYPE html>
<html>
<head>
  <title>Vue.js First Render</title>
</head>
<body>
  <div id="app">
    {{ message }}
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue"></script>

  <script>
    new Vue({
      el: '#app',
      data: {
        message: 'Hello, Vue!'
      },
      beforeCreate() {
        console.log('beforeCreate');
      },
      created() {
        console.log('created');
      },
      beforeMount() {
        console.log('beforeMount');
      },
      mounted() {
        console.log('mounted');
      }
    });
  </script>
</body>
</html>

该应用的页面中,Vue 实例只渲染了一个 div 元素,且绑定了模板字符串 {{ message }}。在 Vue 实例的生命周期中,beforeCreatecreatedbeforeMountmounted 四个函数会依次被调用,这是因为 Vue 实例对象是按照生命周期的步骤一步一步创建、渲染的。其中 beforeCreatecreated 分别代表了 Vue 实例的创建过程,beforeMountmounted 则代表了 Vue 实例在挂载到文档中后的生命周期步骤。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈vue首次渲染全过程 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue内点击url下载文件的最佳解决方案分享

    下面我将为大家详细讲解“Vue内点击URL下载文件的最佳解决方案分享”。 一、问题背景 在Vue项目中,如果需要下载文件,一般的做法是通过后端API来实现文件下载。但是有些特殊情况下,我们需要在前端页面中通过点击链接或按钮来实现文件下载的功能,例如导出Excel表格。那么在Vue项目中,如何实现这个功能呢? 二、解决方案 我们可以通过在前端传递一个文件下载的…

    Vue 2023年5月28日
    00
  • vue+koa2实现session、token登陆状态验证的示例

    一、概述 在web应用程序中,访问控制是一个非常重要的问题。session和token都是常见的存储用户身份验证状态的解决方案。在vue和koa2框架的帮助下,可以轻松实现这些解决方案,并提高应用程序的安全性。 本文将详细介绍如何使用vue+koa2实现session、token登陆状态验证的示例。 二、实现session存储用户身份验证状态 session…

    Vue 2023年5月28日
    00
  • spring boot实现图片上传和下载功能

    下面我将针对“spring boot实现图片上传和下载功能”的完整操作过程进行详细讲解,并提供两个示例以供参考。 准备工作 在开始实现图片上传和下载功能之前,我们需要先准备好开发环境和所需要的依赖。具体流程如下: 环境搭建 JDK 1.8及以上版本 Maven 3.2及以上版本 IDE开发工具(如Eclipse、IntelliJ IDEA等) 需要依赖 在M…

    Vue 2023年5月28日
    00
  • Vue3+Vue-cli4项目中使用腾讯滑块验证码的方法

    接下来我将为您讲解Vue3+Vue-cli4项目中使用腾讯滑块验证码的方法。 1. 准备工作 在开始之前,我们需要先在腾讯云验证码控制台中创建一个验证码应用,并获取到相应的App ID和App Secret。 2. 安装SDK 腾讯云提供了针对多个编程语言的SDK,我们可以根据需要选择相应的SDK进行安装。在Vue3+Vue-cli4项目中,我们可以使用we…

    Vue 2023年5月28日
    00
  • vue中render函数和h函数以及jsx的使用方式

    下面是关于Vue中render函数和h函数以及jsx的使用方式的完整攻略。 一、什么是render函数和h函数? 在Vue中,我们通常使用template模板语法来编写组件的页面结构,但是在某些情况下,我们需要直接书写JavaScript代码来创建组件的DOM结构,这就需要用到Vue中的render函数和h函数。 1. render函数 render函数是V…

    Vue 2023年5月28日
    00
  • 关于Vue v-on指令的使用

    关于Vue v-on指令的使用 在Vue中使用v-on指令可以实现事件监听和处理,常用于页面交互中。下面详细介绍v-on指令的使用方法。 语法 v-on指令是Vue提供的一种事件绑定方法,语法如下: v-on:事件名="事件处理函数" 其中,事件名指绑定的事件名称,事件处理函数是一个在Vue实例中定义的方法。 示例说明 示例1:点击事件 …

    Vue 2023年5月27日
    00
  • Vue数据驱动模拟实现3

    Vue数据驱动模拟实现是指通过手动实现Vue框架底层的部分功能,来深入理解Vue的数据响应式原理。下面我们将给出实现Vue数据驱动的完整攻略: 1. 实现数据响应式 Vue的数据响应式是基于Object.defineProperties实现的,我们可以手动实现一个简化版的数据响应式: function defineReactive(obj, key, val…

    Vue 2023年5月28日
    00
  • 利用Vue3指令实现水印背景详解

    下面是关于”利用Vue3指令实现水印背景”的完整攻略: 1. 实现目标 我们的目标是在 Vue3 项目中实现一个可以在页面上添加水印背景的指令,具体可以支持以下功能: 可以设置水印的颜色、字体、大小等样式; 可以设置水印的文字内容; 水印可以支持自动调整,使得它始终填满整个页面。 2. 实现过程 2.1 安装所需依赖 首先,我们需要为项目安装所需的依赖,包括…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部