a7是什么意思| 血氧饱和度是什么意思| 吃葡萄干对身体有什么好处| 四世同堂什么意思| 92年的属什么生肖| 1月20日什么星座| 向日葵什么时候采摘| 封顶是什么意思| 牛和什么生肖相冲| 胃不舒服吃什么好| 皮炎用什么药膏| 宫颈肥大有什么危害| 芥菜什么时候种| 大红袍属于什么茶| 小腹痛男性什么原因| 综合是什么意思| 老年人腿无力是什么原因导致的| 芥末配什么好吃| rds是什么意思| 奀是什么意思| 白巧克力是什么做的| 血脂高吃什么降血脂| 曹操属什么| 一个点是什么字| 汉字五行属什么| 手麻脚麻是什么原因引起的| 吃一个海参相当于吃了什么| 低密度脂蛋白胆固醇高吃什么药| 老人吃什么钙片补钙效果最好| 一个金字旁一个本念什么| 肠上皮化生是什么意思| 金骏眉茶是什么茶| e6e7阳性是什么意思| 静推是什么意思| 田螺吃什么| 耳鸣是什么症状| 猪八戒是什么佛| 舌头看什么科| 五岳是什么意思| 室间隔增厚是什么意思| 银联是什么| 虾青素有什么功效| 怀孕养狗对胎儿有什么影响| 喉咙痛吃什么药好得快| 口苦口臭是什么原因| 吃什么精力旺盛有精神| 法字五行属什么| 空腹吃荔枝有什么危害| mr平扫是什么检查| 为什么很多人不去庐山| 焦虑症是什么意思| 副词是什么| nadh是什么| 手脚抽筋吃什么药| 牙龈充血是什么原因| 农历11月14日是什么星座| dbm是什么意思| 什么是躯体化症状表现| 属鼠男和什么属相最配| 贫血的人吃什么水果| 投行是做什么的| 一条条什么| 什么辕什么辙| 甲氧氯普胺片又叫什么| o型血是什么血| 夫妻肺片是什么肉| 悦风空调是什么牌子| 阿司匹林不能和什么药一起吃| 煲蛇汤放什么材料好| 翔是什么意思| 乳腺结节有什么危害| 代销商是什么意思| 四柱是什么意思| 坐月子什么不能吃| 人人有的是什么生肖| 兔子能吃什么| 宫腔粘连是什么意思| 子宫破裂有什么危险| 三顾茅庐什么意思| 生理盐水和食用盐水有什么区别| 孕妇梦见猪是什么意思| 细菌是什么| 危险是什么意思| 有氧运动是指什么| 蜻蜓为什么要点水| 什么叫声母什么叫韵母| 三月初九是什么星座| 情商是什么意思| 属鸡的幸运色是什么颜色| 七月13号是什么星座| 秦朝为什么那么快灭亡| 常吐痰是什么原因| 什么克金| 小儿支气管炎咳嗽吃什么药好得快| 鼻塞流清鼻涕吃什么药| 米线配菜都有什么| 嘴唇发白是什么原因| 气血不足吃什么中成药最好| 心慌手抖是什么原因| 7月16是什么星座| 阿堵物是什么意思| 荡气回肠什么意思| 鲁班是什么家| 尿隐血阴性是什么意思| 什么七什么八| 为什么夏天| 低压高吃什么降压药好| 林子祥属什么生肖| 轴重是什么意思| 返酸水吃什么药| 吃什么增加免疫力最快| 远水解不了近渴什么意思| 十一月二十是什么星座| 天空是什么颜色| 记忆力不好是什么原因| 擦伤用什么药好得快| 看耳朵挂什么科| 大米里放什么不生虫子| 蕙字五行属什么| 牙龈发炎是什么原因引起的| 石敢当是什么意思| 中筋面粉适合做什么| 花容月貌是什么意思| 血压高吃什么药比较好| 金什么| 公务员是做什么工作的| 麂皮是什么材质| 什么是新时代| 白带黄吃什么药| 鱼什么而什么| 小手指麻木是什么原因| 什么什么自如| a型血和什么血型生出o型血| 蜂蜜什么人不能吃| 补肾壮阳吃什么药效果好| 三点水加四读什么| 戒奶涨奶痛有什么缓解方法| 农历8月15是什么节日| 被舔下面什么感觉| 消化不良反酸吃什么药| 生肖鼠和什么生肖最配| 梦见孩子被蛇咬是什么意思| 回潮是什么意思| 玄青色是什么颜色| 中秋节为什么要吃月饼| 口腔医学技术是干什么的| 越南讲什么语言| 肝气郁结喝什么茶| 心血管疾病做什么检查| 褐色分泌物是什么原因引起的| 99属什么生肖| 吃了羊肉不能吃什么| prf是什么意思| 男人鼻头有痣代表什么| 德不配位是什么意思| 骨钙素低是什么原因| 紫色加绿色是什么颜色| 禅悟是什么意思| 白细胞低吃什么食物好| 安全期是什么意思| 粉尘作业时必须佩戴什么口罩| 益生菌什么时间吃最好| 为什么会得尿道炎| 眼睑是什么位置图片| 吃什么可以护肝养肝| 南京五行属什么| 烂仔是什么意思| 乱伦是什么| 胰腺管扩张是什么原因| 走马观花的走是什么意思| 什么叫介入治疗| 棺材用什么木材做最好| 外阴灼热用什么药| 弱智的人有什么表现| 行驶证和驾驶证有什么区别| 金的部首是什么| 查乙肝挂什么科| 上海有什么景点| 最近嗜睡是什么原因| 办理港澳通行证需要什么材料| 比肩什么意思| 定心丸什么意思| 原位杂交技术检查什么| 缠头是什么意思| ac是什么意思| 开路是什么意思| 天地人和是什么意思| 胸部挂什么科| 么是什么意思| 黄柏泡水喝有什么功效| 范思哲是什么品牌| 走四方是什么生肖| 什么是穿刺| 手刃是什么意思| oder是什么意思| 黑眼圈严重是什么原因| 命运是什么意思| 贫血是什么原因| 小孩拉肚子吃什么药好| 甲亢能吃什么水果| 重建是什么意思| 打了狂犬疫苗不能吃什么| 羊肉馅饺子放什么菜| 肌层回声欠均匀是什么意思| 月经每次都推迟是什么原因| 刚刚邹城出什么大事了| ns是什么意思| instagram是什么| 回族不吃什么肉| 气血虚什么症状| 30岁是什么之年| warning是什么意思| 强悍是什么意思| 吃山竹有什么好处和坏处| 射频是什么| 牙龈流血是什么原因| 眉毛附近长痘痘是什么原因| 宝宝便秘吃什么好| 奔走相告的走是什么意思| 肺纹理增强是什么意思| 什么是褪黑素| 什么食物可以降血糖| 00年属什么生肖| 孕妇忌吃什么| 痛经喝什么可以缓解| 后颈长痘痘是什么原因| 鼻基底填充用什么材料比较好| 两色富足间是什么生肖| 椰子鞋是什么牌子| 什么是火碱| 什么颜色的床单有助于睡眠| 完璧归赵发生在什么时期| 小便很黄是什么原因| 为什么叫书记| 惊弓之鸟什么意思| 韭菜有什么功效| 头顶是什么穴位| 88年的属什么生肖| 铂字五行属什么| 血糖高可以吃什么水果| 5.29是什么星座| 荨麻疹是什么原因| 黛力新主治什么病| 在什么什么后面| 抗巨细胞病毒抗体igg高是什么意思| 间是什么结构| 斜视是什么原因导致的| 山竹不能和什么一起吃| 林可霉素主治什么病| 什么颜色加什么颜色是紫色| 晟什么意思| 什么样的肚子疼是癌| 米色配什么颜色好看| 肋间神经痛挂什么科| 鱼蛋是什么| 生命线分叉代表什么| 青海是什么省| 加德纳菌阳性是什么意思| 扁桃体挂什么科| 菠菜吃多了有什么害处| 肚子有虫吃什么药| 内外兼修是什么意思| dw手表是什么档次| 金牛座是什么象星座| 百度
Skip to content

面试官:说说 Real DOM和 Virtual DOM 的区别?优缺点??#181

@huihuiha

Description

@huihuiha

一、是什么

Real DOM,真实DOM, 意思为文档对象模型,是一个结构化文本的抽象,在页面渲染出的每一个结点都是一个真实DOM结构,如下:

Virtual Dom,本质上是以 JavaScript 对象形式存在的对 DOM 的描述

创建虚拟DOM目的就是为了更好将虚拟的节点渲染到页面视图中,虚拟DOM对象的节点与真实DOM的属性一一照应

React中,JSX是其一大特性,可以让你在JS中通过使用XML的方式去直接声明界面的DOM结构

const vDom = <h1>Hello World</h1> // 创建h1标签,右边千万不能加引号
const root = document.getElementById('root') // 找到<div id="root"></div>节点
ReactDOM.render(vDom, root) // 把创建的h1标签渲染到root节点上

上述中,ReactDOM.render()用于将你创建好的虚拟DOM节点插入到某个真实节点上,并渲染到页面上

JSX实际是一种语法糖,在使用过程中会被babel进行编译转化成JS代码,上述VDOM转化为如下:

const vDom = React.createElement(
  'h1' 
  { className: 'hClass', id: 'hId' },
  'hello world'
)

可以看到,JSX就是为了简化直接调用React.createElement() 方法:

  • 第一个参数是标签名,例如h1、span、table...

  • 第二个参数是个对象,里面存着标签的一些属性,例如id、class等

    第三个参数是节点中的文本

通过console.log(VDOM),则能够得到虚拟VDOM消息

所以可以得到,JSX通过babel的方式转化成React.createElement执行,返回值是一个对象,也就是虚拟DOM

二、区别

两者的区别如下:

  • 虚拟DOM不会进行排版与重绘操作,而真实DOM会频繁重排与重绘
  • 虚拟DOM的总损耗是“虚拟DOM增删改+真实DOM差异增删改+排版与重绘”,真实DOM的总损耗是“真实DOM完全增删改+排版与重绘”

以前文章举过的例子:

传统的原生apijQuery去操作DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程

当你在一次操作时,需要更新10个DOM节点,浏览器没这么智能,收到第一个更新DOM请求后,并不知道后续还有9次更新操作,因此会马上执行流程,最终执行10次流程

而通过VNode,同样更新10个DOM节点,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存到本地的一个js对象中,最终将这个js对象一次性attachDOM树上,避免大量的无谓计算

三、优缺点

真实DOM的优势:

  • 易用

缺点:

  • 效率低,解析速度慢,内存占用量过高
  • 性能差:频繁操作真实DOM,易于导致重绘与回流

使用虚拟DOM的优势如下:

  • 简单方便:如果使用手动操作真实DOM来完成页面,繁琐又容易出错,在大规模应用下维护起来也很困难

  • 性能方面:使用Virtual DOM,能够有效避免真实DOM数频繁更新,减少多次引起重绘与回流,提高性能

  • 跨平台:React借助虚拟DOM, 带来了跨平台的能力,一套代码多端运行

缺点:

  • 在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化
  • 首次渲染大量DOM时,由于多了一层虚拟DOM的计算,速度比正常稍慢

参考文献

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      女性尿道炎吃什么药 反贪局局长是什么级别 沙发客是什么意思 背胀是什么原因 一直干咳是什么原因
      奇妙的什么 myp是什么意思 小孩嘴唇发白是什么原因 县长是什么级别的干部 毒瘾发作有什么症状
      德国纳粹是什么意思 非洲人吃什么主食 dq是什么 新生儿黄疸是什么原因引起的 疱疹用什么药膏
      梁五行属什么 黄金芽属于什么茶 行善积德是什么生肖 julius手表是什么牌子 眼睛老跳是什么原因
      为什么用英语怎么说hcv9jop7ns4r.cn 双抗是什么意思hcv7jop9ns3r.cn 2023年属什么生肖hcv8jop2ns1r.cn 大便不成形吃什么食物好xscnpatent.com 心跳慢吃什么药sanhestory.com
      低级别上皮内瘤变是什么意思bjhyzcsm.com 狗是什么生肖hcv9jop7ns4r.cn 墨蓝色是什么颜色sanhestory.com 梦见抓蝎子是什么意思hcv9jop5ns5r.cn 成双成对是什么意思hcv7jop9ns1r.cn
      放疗有什么危害hcv8jop6ns2r.cn 脾大是什么原因造成的怎么治疗hcv8jop5ns8r.cn 一月来两次月经是什么原因qingzhougame.com 致青春是什么意思hcv9jop5ns7r.cn 通便吃什么药最快hcv8jop5ns6r.cn
      手指关节疼痛用什么药weuuu.com 扁桃体肥大是什么原因造成的dayuxmw.com 3.2号是什么星座hcv8jop0ns9r.cn 脾肾亏虚的症状是什么hcv8jop1ns9r.cn 什么人容易中暑hanqikai.com
      百度