用原生JS操作DOM时,浏览器会从构建DOM树从头到尾执行一边流程,操作DOM的代价非常昂贵。
比如10次更新,虚拟DOM不会立即操作DOM,而是将10次更新的diff内容保存到本地一个js对象中。最终将这个js对象一次性attach到DOM树上。用JS对象模拟DOM节点,将页面更新全部反映到JS对象上,操作JS对象的速度更快,更新完映射成真实DOM.

https://www.zhihu.com/question/29504639