面试题65:什么是虚拟dom

虚拟dom是当前前端最流行的两个框架(vue和react)都用到的一种技术,都说他能帮助vue和react提升渲染性能,提升用户体验。那么今天我们来详细看看虚拟dom到底是个什么鬼

虚拟dom的定义与作用

  • 什么是虚拟dom

大家一定要记住的一点就是,虚拟dom就是一个普通的js对象。是一个用来描述真实dom结构的js对象,因为他不是真实dom,所以才叫虚拟dom。

一、什么是虚拟DOM

1.虚拟DOM是对真实DOM的抽象,以JavaScript对象(VNode节点)作为基础的树,用对象的属性来描述节点,最终可以通过一系列操作使这棵树映射到真实环境上。
2.Javascript对象中,虚拟DOM表现为一个Object对象,并且最少包含标签名(tag)、属性(attrs)和子元素对象(children)三个属性。
3.创建虚拟DOM就是为了更好将虚拟的节点渲染到页面视图中,所以虚拟DOM对象的节点与真实DOM的属性一一照应。
4.真实DOM
面试题65:什么是虚拟dom_第1张图片

二、为什么需要虚拟DOM

DOM其实是很慢的,哪怕一个最简单的div也包含着很多的属性。
因此操作DOM的代价仍旧是昂贵的,频繁操作还是会出现页面卡顿,影响用户的体验。
用传统的原生api或jQuery操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程。
如:当要更新10个DOM节点时,浏览器收到第一个更新DOM请求后,并不知道后续还有9次更新操作,会马上执行流程,最终执行10次流程。通过VNode,同样更新10个DOM节点,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存到本地的一个js对象中,最终将这个js对象一次性attach到DOM树上,避免大量的无谓计算。
虚拟DOM最大的优势在于抽象了原本的渲染过程,实现了跨平台的能力,不仅仅局限于浏览器的DOM,还可以是其他组件。


三、面试官:介绍一下虚拟DOM

回答:虚拟DOM是对真实DOM的一种抽象,会根据DOM标签的名字、属性、孩子对真实DOM进行映射。使用虚拟DOM的原因是,真实DOM其实是很慢的,一个简单的标签也包含了许多属性。同时真实DOM进行更新时的过程很笨拙,虚拟DOM使用diff算法,可以很轻便的进行DOM的操作。

原文链接:https://blog.csdn.net/weixin_44337386/article/details/125436521

面试题65:什么是虚拟dom_第2张图片

你可能感兴趣的:(javascript,面试,javascript,java,前端)