DOM是文档对象模型(Document Object Model)的简写,在前端的石器时代,我们页面交互和渲染,是通过服务端渲染或者直接操作DOM实现的,有点像C语言或者C++这类系统编程语言手动操作内存,那时候JQuery是最火的编程语言,后来随着软硬件性能的不断改进,Web应用也变得越来越复杂,功能越来越强大,所以对于做前端开发的程序猿的能力要求也越来越高,像JQuery这样的编程方式变得非常低效,尽管手动操作DOM可能可以达到更高的性能和灵活性。
为了提高网站开发人员的工作效率,React就又加了一层Virtual Dom,可以声明式、组合式的构建一颗对象树,然后映射到DOM。 Virtual Dom的出现,可以说是改变了开发方式,开发者可以不用在关心DOM的操作细节,另外,也使得多平台渲染成为可能。
vdom因为是纯粹的JS对象,所以操作它会很高效,但是vdom的变更最终会转换成DOM操作,为了实现高效的DOM操作,一套高效的虚拟DOM diff算法显得很有必要。