1、virtual DOM对应浏览器的DOM元素,它是由一个个的React element组成的。
2、React element, 是由React 库提供的createElement 函数创建而来,是非常轻量级的数据结构,我们创建一个React element,
let h1Elem = React.createElement('h1', {id: 'recipe', 'data-type': 'title'}, 'Hello World');createElement 函数接受三个参数,第一个是type,第二个是properties,第三个是children
3、虚拟DOM是以js对象形式存在于内存中的,和html element 没有任何关系, 但是通过它,我们却准确地描述了 html element 长什么样子,所以它是virtual, 用于指导构造真正的html element.
4、react-dom 库了,它里面有一个render 方法, 可以把虚拟DOM 转化成真实的DOM, 用法如下:
ReactDOM.render(ulElem, document.getElementById('root'));它接受两个参数,一个是要转化的Element, 一个是渲染到什么地方, 这时我们刷新浏览器,可以看到3个li, 和我们用createElement创建的元素一一对应。
虚拟DOM提高性能的原因
Virtual DOM 本质上就是在 JS 和 DOM 之间做了一个缓存。可以类比 CPU 和硬盘,既然硬盘这么慢,我们就在它们之间加个缓存:既然 DOM 这么慢,我们就在它们 JS 和 DOM 之间加个缓存。CPU(JS)只操作内存(Virtual DOM),最后的时候再把变更写入硬盘(DOM)。
利用diff算法避免了没有必要的DOM操作:
diff算法