Javascript整理-DOM

195 阅读1分钟
  •  DOM 常用 API
  • 虚拟 DOM:浏览器渲染过程 -> 真实 DOM 和虚拟 DOM -> Diff 算法

DOM常用API

1. 节点创建型

2. 页面修改型

3. 节点查询型

4. 节点关系型

5. 元素属性型

6. 元素样式型

虚拟DOM

 1. 浏览器渲染过程

  

解析html->构建DOM树->布局render树->渲染render树

对于虚拟DOM下文小编针对snabbdom.js来分析

snabbdom做了什么事呢

1. compile  把真实的DOM编译成VNode

2. diff  对比oldNode和newNode的区别

3. patch 根据步骤2, 把不同的虚拟DOM渲染到真的的DOM上

下面我们对diff算法来细细拆分下

英文对应:

oldch: 旧DOM树数组

newch: 新DOM树数组

oldSNode: 旧DOM树头部

oldENode: 旧DOM树尾部

newSNode: 新DOM树头部

newENode: 新DOM树尾部

diff算法核心比对步骤

1. oldSNode是否为null,如果为null,则进行下一轮比较

2. oldENode是否为null,如果为null,则进行下一轮比较

3. newSNode是否为null,如果为null,则进行下一轮比较

4. newENode是否为null,如果为null,则进行下一轮比较

5. oldSNode = newSNode,若相同则进行下一轮比较

6. oldENode = newENode, 若相同则进行下一轮比较

7. oldSNode = newENode,若相同则进行下一轮比较

8. oldENode = newSNode, 若相同则进行下一轮比较

9. 如果都不符合以上条件, 如果oldch没找到newch里有则新增, 如果oldch有,newch没有则删除

参考文章: jianshu.com/p/f45463e7be20