您当前的位置: 首页 > 

什么是虚拟DOM?

发布时间:2021-03-03 17:43:32 ,浏览量:0

普通HTML标签写法

<a class="link" href="https://github.com/facebook/react">React<a> 

在js中手动生成相同dom的写法

var a = document.createElement('a') a.setAttribute('class', 'link') a.setAttribute('href', 'https://github.com/facebook/react') a.appendChild(document.createTextNode('React')) 

这是一种封装,沿用的React.createElement的命名

var a = React.createElement('a', { className: 'link', href: 'https://github.com/facebook/react' }, 'React') 

所有html结构,都可以用js dom来构造,而且能将构造的步骤封装起来,做到「数据-dom结构」的映射。缓存初始数据,新数据进来时,与旧数据对比,找到差异,根据差异本身的性质进行dom操作;无差异,则不作为。 dom本身在js中就是一种数据结构,console.dir(document.body),在控制台可以看到body的数据结构。然而,dom相关的数据丰富而且复杂,我们其实只关心少数元素的少数属性。建立一个javascript plain object,非常轻量,用它保存我们真正关心的与dom相关的少数数据;对它进行操作,然后对比操作前后的差异,再根据映射关系去操作真正的dom,无疑能提高性能。这就是虚拟DOM。

参考

  • https://www.zhihu.com/question/29504639/answer/44662943
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0607s