当前位置: 首页 > news >正文

前端vue:节点、树以及虚拟 DOM

每天认真学习一个vue 知识点呀!

节点

在深入渲染函数render()之前,了解一些浏览器的工作原理是很重要的。以下面这段 HTML 为例:

<div>
  <h1>My title</h1>
  Some text content
  <!-- TODO: Add tagline -->
</div>
复制代码

当浏览器读到这些代码时,它会建立一个“DOM 节点”树来保持追踪所有内容,如同你会画一张家谱树来追踪家庭成员的发展一样。

上述代码对应节点如下:

每个元素都是一个节点。每段文字也是一个节点。甚至注释也都是节点。一个节点就是页面的一个部分。就像家谱树一样,每个节点都可以有孩子节点 (也就是说每个部分可以包含其它的一些部分)。

高效地更新所有这些节点会是比较困难的,不过所幸你不必手动完成这个工作。你只需要告诉 Vue 你希望页面上的 HTML 是什么,这可以是在一个模板里:

<h1>{{ blogTitle }}</h1>
复制代码

或者一个渲染函数里:

render: function (createElement) {
  return createElement('h1', this.blogTitle)
}
复制代码

在这两种情况下,Vue 都会自动保持页面的更新,即便 blogTitle 发生了改变。

VNode 树

Vue 通过建立一个虚拟 DOM 来追踪自己要如何改变真实 DOM。请仔细看这行代码:

return createElement('h1', this.blogTitle)
复制代码
  • createElement 到底会返回什么呢?

其实不是一个实际的 DOM 元素。它更准确的名字可能是 createNodeDescription,因为它所包含的信息会告诉 Vue, 页面上需要渲染什么样的节点,包括及其子节点的描述信息。我们把这样的节点描述为“虚拟节点 (virtual node)”,也常简写它为“VNode”。“虚拟 DOM”是我们对由 Vue 组件树建立起来的整个 VNode 树的称呼。

参考

转载于:https://juejin.im/post/5cceee52e51d453ab851d38b

相关文章:

  • 【集合框架】JDK1.8源码分析之HashMap
  • leetcode--翻转二叉树
  • 学习笔记 12 数据库索引和锁
  • mac如何强制退出程序?强制退出程序的六种方法
  • 清空的回收站文件如何还原?这个方法超实用
  • Objc Runtime 类学习图(新旧版本)
  • sql插入时:注意事项
  • 函数的进阶
  • SFDC 开发实践
  • Python新手基础入门教程:那些年我们踩过的那些坑!
  • IT兄弟连 JavaWeb教程 Servlet会话跟踪 获取Session对象
  • 乒乓规则分析
  • MacOS的Clion找不到 wchar.h的解决方案
  • 玩转Android Jetpack系列之ViewMode
  • 开源 | 基于会话的最优推荐模型:SR-GNN的PaddlePaddle实现
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Android系统模拟器绘制实现概述
  •  D - 粉碎叛乱F - 其他起义
  • DataBase in Android
  • git 常用命令
  • HTTP中的ETag在移动客户端的应用
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript实现分页效果
  • orm2 中文文档 3.1 模型属性
  • Python 基础起步 (十) 什么叫函数?
  • rc-form之最单纯情况
  • spring boot下thymeleaf全局静态变量配置
  • Transformer-XL: Unleashing the Potential of Attention Models
  • vue的全局变量和全局拦截请求器
  • 从零开始学习部署
  • 机器学习中为什么要做归一化normalization
  • 精彩代码 vue.js
  • 学习JavaScript数据结构与算法 — 树
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 你对linux中grep命令知道多少?
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $NOIp2018$劝退记
  • (C语言)共用体union的用法举例
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)Linux——Linux常用指令
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (六)Hibernate的二级缓存
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)基于IDEA的JAVA基础1
  • (原)Matlab的svmtrain和svmclassify
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)大型网站架构演变和知识体系
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET Project Open Day(2011.11.13)