浅谈vue首次渲染全过程

当浏览器加载 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-property-decorator的基础使用实践

    下面我将详细讲解“关于vue-property-decorator的基础使用实践”的完整攻略,以及两条示例说明。 什么是vue-property-decorator vue-property-decorator 是 Vue.js TypeScript 类组件的实用装饰器,它提供了一些诸如 @Prop、@Component 等装饰器,简化了我们对 Vue 组件…

    Vue 2023年5月27日
    00
  • Vue.js 中的 v-model 指令及绑定表单元素的方法

    当使用 Vue.js 开发表单时,经常需要将表单元素的值(如文本输入框、单选框、复选框等)与 Vue 组件中的数据进行绑定,这就需要用到 Vue.js 中的 v-model 指令了。下面是具体的操作方法: 绑定文本输入框的值 将文本输入框的值与 Vue 组件中的 data 属性进行双向绑定的方法,示例如下: 在 Vue 组件的 template 中,定义一个…

    Vue 2023年5月28日
    00
  • vue设计一个倒计时秒杀的组件详解

    Vue设计一个倒计时秒杀的组件是一种常见的需求,在电商领域比较常见。以下是实现该组件的详解: 设计组件 首先,我们需要考虑该组件的设计和功能。该组件需要实现一个倒计时的效果,并且在倒计时结束时需要执行某些操作,比如提交订单、弹出提示等。因此,我们可以将该组件分为两部分:倒计时显示和倒计时结束时的操作。 倒计时显示部分可以通过计算时分秒来实现;倒计时结束时的操…

    Vue 2023年5月29日
    00
  • Vue如何实现简单的时间轴与时间进度条

    Vue是一款流行的前端框架,用于构建现代化的Web应用程序。时间轴与时间进度条在Web应用程序中非常常见,Vue也提供了丰富的组件来实现这些功能。以下是一个简单的Vue时间轴和进度条的完整攻略。 步骤一:安装Vue CLI并创建项目 首先,我们需要安装Vue CLI并创建项目。Vue CLI是一个命令行工具,可以帮助我们快速创建Vue项目。在命令行中运行以下…

    Vue 2023年5月29日
    00
  • 自定义Vue组件打包、发布到npm及使用教程

    下面是详细的“自定义Vue组件打包、发布到npm及使用教程”的完整攻略: 一、前置准备 在开始之前,你需要确保以下几点已经完成: 已安装 Node.js 已安装 Vue CLI 已注册 NPM 账号并登录 二、创建 Vue 组件 创建 Vue 项目 首先,我们需要使用 Vue CLI 快速创建一个 Vue 项目。在命令行中运行以下命令: vue create…

    Vue 2023年5月28日
    00
  • java编程中实现调用js方法分析

    要在Java编程中实现调用JavaScript方法,可以通过Java与JavaScript的互操作性(JSR-223)进行实现。以下是具体步骤: 导入相应的依赖项 首先在Java项目中,需要导入JSR-223的相关依赖项,一般来说需要的有javax.script.ScriptEngineManager和javax.script.ScriptEngine两个依…

    Vue 2023年5月28日
    00
  • 通过源码分析Vue的双向数据绑定详解

    作为网站的作者,我非常乐意为大家讲解“通过源码分析Vue的双向数据绑定详解”的完整攻略。下面将详细介绍这个过程。 什么是双向数据绑定 简单来说,双向数据绑定是指数据的变化能够在视图中自动反映出来,同时视图中的变化也能够自动同步到数据中去,即数据和视图之间的双向绑定。在Vue中,双向数据绑定是由v-model指令来实现的。 Vue中双向数据绑定的实现原理 Vu…

    Vue 2023年5月28日
    00
  • Vue脚手架搭建及创建Vue项目流程的详细教程

    下面是关于Vue脚手架搭建及创建Vue项目的详细教程攻略: 1. 什么是Vue脚手架? Vue脚手架是Vue.js的官方脚手架工具,提供了快速搭建Vue.js开发环境的方法,包含了常用的插件和构建工具,方便开发者快速地进行Vue项目的开发与调试。 2. Vue脚手架搭建 2.1 环境准备 Vue脚手架需要依赖Node.js和npm包管理器,因此需要先安装No…

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