haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.54k stars 3.26k forks source link

[html] 第167天 Shadow DOM和Virtual DOM有什么区别? #1275

Open haizhilin2013 opened 5 years ago

haizhilin2013 commented 5 years ago

第167天 Shadow DOM和Virtual DOM有什么区别?

94

linushp commented 5 years ago

Shadow DOM 是浏览器提供的,提供了一个小型的沙盒,隔离外界的css样式。 Virtual DOM 只是js模拟的DOM结构。

renchaoqiong commented 5 years ago

Shadow DOM 1.允许将隐藏的DOM树添加到常规的DOM树中——它以shadow root为起始根节点,在这个根节点的下方,可以是任意元素,和普通的DOM元素一样。

  1. 必须附加在一个元素上,可以是HTML文件中的一个元素,也可以是脚本中创建的元素;可以是原生的元素 Virtual DOM 是虚拟的DOM,比如在VUE中采用虚拟dom一般是为了提高渲染效率
wwqin commented 5 years ago

Shadow DOM

Shadow DOM是浏览器提供的一个可以允许将隐藏的DOM树添加到常规的DOM树中——它以shadow root为起始根节点,在这个根节点的下方,可以是任意元素,和普通的DOM元素一样。

Virtual DOM

虚拟DOM是由js实现的避免DOM树频繁更新,通过js的对象模拟DOM中的节点,然后通过特定的render方法将它渲染成真实的节点,数据更新时,渲染得到新的 Virtual DOM,与上一次得到的 Virtual DOM 进行 diff,得到所有需要在 DOM 上进行的变更,然后在 patch 过程中应用到 DOM 上实现UI的同步更新。

vkboo commented 5 years ago