虚拟 DOM(一)
一、什么是 vdom
- 用
JS
模拟DOM
结构 DOM
变化的对比,放在JS
层来做- 提高重绘性能
二、设计一个需求场景
用 jQuery 实现
遇到的问题
- DOM 操作是“昂贵”的,js 运行效率高
- 尽量减少 DOM 操作,而不是“推倒重来”
- 项目越复杂,影响就越严重
- vdom 即可解决这个问题
三、vdom 的如何应用,核心 API 是什么
什么是 vdom
介绍 snabbdom
介绍 snabbdom - h 函数
介绍 snabbdom - patch 函数
重做 jQuery 的 demo
- 使用
data
生成vnode
- 第一次渲染,将
vnode
渲染到#container
中 - 并将
vnode
缓存下来 - 修改
data
之后,用新data
生成newVnode
- 将
vnode
和newVnode
对比
核心 API
h(‘<标签名>’, {…属性…}, […子元素…])
h(‘<标签名>’, {…属性…}, ‘….’)
patch(container, vnode)
patch(vnode, newVnode)
四、介绍一下 diff 算法
4.1 vdom 为何使用 diff 算法
- DOM 操作是“昂贵”的,因此尽量减少 DOM 操作
- 找出本次 DOM 必须更新的节点来更新,其他的不更新
- 这个“找出”的过程,就需要 diff 算法
patch(container, vnode)
演示过程
4.2 diff 实现过程
patch(container, vnode)
和patch(vnode, newVnode)
createElment
updateChildren
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论