首页 > 其他分享 >解析 Vue 模板的本质:从语法糖到渲染过程

解析 Vue 模板的本质:从语法糖到渲染过程

时间:2024-10-27 14:17:55浏览次数:9  
标签:Vue 函数 渲染 DOM 糖到 编译 模板

大家耳熟能详的表述如下:Vue 模板的本质其实是一种 声明式渲染 的形式,它在开发过程中提供了将组件的结构与逻辑分离的便利。

也就是说,模板 template 的存在只是为了让我们以更直观的方式描述界面的结构,然而在运行时,模板其实是不存在的,它在底层会被 Vue 编译为更高效的 渲染函数

1. Vue 模版的本质

Vue 模板语法是基于 HTML 的拓展,它背后的运行机制是将模板编译为 JavaScript 的渲染函数。渲染函数生成 Virtual DOM(虚拟 DOM),并与真实 DOM 进行对比更新(diffing),进而提高渲染的性能。

渲染函数 render 本质上是一个 JavaScript 函数,用于描述 UI 如何与数据关联。Vue 的模板系统和 JSX、React 类似,但 Vue 的模板更加直观,不需要直接编写 JavaScript 函数。

那么 render 函数的作用是什么呢?它的主要任务是描述界面的渲染过程。通过 render 函数,Vue 可以生成虚拟节点,这些虚拟节点是对页面结构的抽象描述。也就是说,render 函数并不直接操作真实的 DOM,它返回的是一个虚拟 DOM,用于描述页面中包含的元素和内容。

在 Vue 中,常用的 h 函数(即 “createElement” 函数)负责创建这些虚拟节点,即 Vue 的虚拟节点就是在渲染函数中产生的。h 函数会根据传入的参数返回一个虚拟节点对象,而这个虚拟节点就是对页面结构的抽象表示。

编译过程:

1、模版编译:Vue 在运行时会将模板编译为渲染函数。这些渲染函数会生成虚拟 DOM。

2、虚拟 DOM 更新:当组件的状态或数据发生变化时,Vue 会重新调用渲染函数生成新的虚拟 DOM。

3、Diff 算法对比:Vue 将新生成的虚拟 DOM 与上一次生成的虚拟 DOM 进行比较,找出变化的地方。

4、真实 DOM 更新:最后,Vue 将变化更新到实际的 DOM 上。

2. Vue 模版的基本语法

1、插值表达式

插值表达式用于动态显示数据,常用 {{ }} 包裹 JavaScript 表达式:

标签:Vue,函数,渲染,DOM,糖到,编译,模板
From: https://blog.csdn.net/weixin_52648900/article/details/143095925

相关文章

  • SpringBoot+Neo4j+Vue+Es集成ES全文检索、Activiti工作流、Neo4J知识图谱的知识库管理
     在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现......
  • (开题报告)django+vue大学生兼职小程序前台论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于大学生兼职小程序的研究,现有研究主要以大学生就业相关的大型综合平台为主,专门针对大学生兼职小程序的研究较少。在国内外,就业相关......
  • 在VUE框架下使用vue-router来进行局部页面跳转
    在VUE框架下使用vue-router来进行局部页面跳转1、创建并绑定路由文件2、在Vue文件下,使用路由来进行跳转步骤如下:1、创建并绑定路由文件①创建路由文件在路径"./{prjName}/src/router"下创建router.ts文件import{createRouter,createWebHistory,createWebHashHistory}......
  • 有了 Vue + Nginx,为什么还要 Node
    开头段落:Vue和Nginx结合能构建高效的前端服务,但Node.js的加入能带来更广泛的服务端优势:例如实现服务器端渲染(SSR)、提供API服务、执行自动化构建及任务管理、及灵活的数据处理能力。而服务器端渲染是最为明显的一点——使用Vue时,若不通过Node.js,你的网站可能只能做到客户端渲染(CSR......
  • Vue3用户关注与粉丝列表展示
    文章目录说明功能描述:代码说明该组件主要是通过一个小抽屉进行用户粉丝与关注列表的展示前提:这里用了elementPlus的组件库所以需要配置好elementPlus的组件库环境这里采用的是根据传入的用户名进行查询。也可以修改为根据传入的用户id进行查询功能描述:抽屉窗:使......
  • 【毕业设计】基于Springboot + Vue的城市垃圾分类管理系统
    随着城市化进程的加快,城市垃圾的处理与分类成为了社会关注的重点。传统的垃圾管理方式通常依赖于人工分拣和纸质记录,这种方式不仅效率低下,还容易产生信息记录错误和数据丢失的情况。因此,开发一个智能化的城市垃圾分类管理系统显得尤为重要。本文将介绍基于SpringBoot开发的城市......
  • 【毕业设计】基于SpringBoot + Vue的扶贫助农系统
    在当今数字化时代,信息技术的快速发展为各个领域带来了新的机遇和挑战。特别是在扶贫助农领域,传统的管理方法往往面临效率低、错误率高、检索困难等问题。为了提高扶贫助农信息的管理效率,本文介绍了一个基于SpringBoot框架开发的扶贫助农系统。1.为什么需要一个扶贫助农系统?......
  • Vue 前端图形数字验证码插件
    git:https://gitee.com/brownshrike/captcha-mininpminstallcaptcha-mini <el-form-itemprop="vercode"><el-inputv-model="formData.code"autocomplete="off"placeholder="请输入验证码"maxlength="......
  • 怎样在Vue.js中使用Vuex进行状态管理
    标题:怎样在Vue.js中使用Vuex进行状态管理摘要:状态管理是任何复杂应用不可或缺的环节。使用Vuex进行状态管理可保持组件间数据同步性与可预测性。通过以下几点进行说明:1、Vuex基本理论;2、Vuex状态树设计;3、实施Vuex的步骤;4、高阶功能及最佳实践。在Vuex基本理论中,即以‘单一状态树......
  • (开题报告)django+vue《集慧》毕业论文管理系统论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于毕业论文管理系统的研究,现有研究主要以传统的管理模式为主,如单纯的文档管理和流程跟踪等方式。专门针对将Django和Vue技术相结合......