pan94u / nya

Simple data-driven implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nya

简单的数据驱动框架实现

为什么要引入虚拟 DOM

  • 性能优势:虚拟 DOM 和真实 DOM 是一一对应的关系。由于传统修改 DOM 代价昂贵,虚拟 DOM 引入后, 可以比较内存中新旧虚拟节点,找出最小更新,以减少操作 DOM 引起重排、重绘的性能消耗。

    (当然如果 diff 算法+最小修改消耗的性能大于直接修改 dom 性能,这就是不成立的)

    而且修改虚拟节点并不会直接引起 DOM 修改,而是将此次修改放入重载队列,当条件满足时,引发 diff,将队列中所有的修改合并处理,这样就可以让浏览器以一次重载、重绘的代价修改 DOM。

  • 跨端优势:虚拟 DOM 相当于一层映射。在不同平台同一套代码,通过使用使用不同的渲染策略,就可以在不同平台上适配。比如 React 中虚拟 DOM 最终会映射为浏览器 DOM 树,而 RN 中虚拟 DOM 会通过 JavaScriptCore 映射为原生控件树.

About

Simple data-driven implementation

License:Apache License 2.0


Languages

Language:JavaScript 81.7%Language:HTML 18.3%