关于 虚拟 DOM、Shadow DOM 和 DocumentFragment

Virtual DOM

如果数据绑定将开发者从操作 DOM 中解放了出来,那虚拟 DOM 则为数据绑定提供了性能保证,还有分层设计、跨平台以及服务端渲染等特性。

原理

虚拟 DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU(JS) 和硬盘(DOM),直接操作硬盘(DOM)很慢,我们就在它们之间加个内存(Virtual DOM),CPU(JS)只操作内存(Virtual DOM),最后再把变更写入硬盘(DOM)。

并且虚拟 DOM 还会使用 Diff 算法来计算出真正需要更新的节点,从而最大限度地减少 DOM 操作,提升性能。

虚拟 DOM 的实现主要包括三个部分:

1.用 JavaScript 对象模拟真实 DOM 树,对真实 DOM 进行抽象;
2.diff 算法 — 比较两棵虚拟 DOM 树的差异;
3.pach 算法(打补丁) — 将两个虚拟 DOM 对象的差异应用到真正的 DOM 树。

例如,一个 Vue 组件的 HTML 结构为:

<template><div id="app" class="container"><h1>hello</h1></div>
</template> 

Vue 在编译时会将 template 模板转换成 VNode 对象并缓存下来:

{type:'div',props:{ id:'app', class:'container' },children: [{ type: 'h1', children:'hello' }]
} 

这样当组件状态数据发生变化时,会触发虚拟 DOM 数据的变化,然后 Vue 会通过 D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值