DOM
是浏览器提供的文档对象模型,创建好页面加载到浏览器的时候,DOM也被创建了,它会把网页文档转换成一个文档对象,通过这个对象可以对网页的内容进行修改删除。我们写的网页上的所有的标签,都可以通过dom对象来修改,比如对某个页面右键检查,在查看器里把一个元素的节点删掉,就用到了dom的api来把元素来实现,在代码里可以通过document这个全局对象来操作dom。
简单理解就是,把整个网页映射成一个对象,通过这个对象,对网页进行操作,这对象就是DOM。
虚拟DOM
虚拟DOM是vue里出现的概念。
为什么要有虚拟DOM?
在虚拟DOM出现之前,是直接通过操作dom来更新网页,比如直接拿到标签的名字,给它加一些事件,像点击按钮数据改变这种。一个网页有很多标签元素,每个标签的事件都直接操作DOM来更新网页的话,会比较慢,浏览器引擎执行js的速度是很快的,比直接操作DOM要快很多,所以就出现了用js模拟的虚拟DOM。
什么是虚拟DOM?
虚拟DOM是一个JavaScript对象,是真实DOM的副本。改变页面的时候,要先把改变的内容应用到虚拟DOM上,先调整虚拟DOM,当改变的内容足够多时,就把这些变化应用到真实DOM上。
优点:
- 不用手动操作DOM
- 跨平台 缺点:
- 第一次渲染大量DOM时,由于增加了虚拟DOM的计算,会比直接插入innerHTML慢。
如何实现虚拟DOM
vue2是通过snabbdom这个库来实现的