dom操作为什么这么慢
一、浏览器的组成
1.浏览器分为渲染引擎和JS引擎
- 两个各司其职,互不干扰
-
二、跨线程通信
1.document.body.appendChild(div1)
当浏览器发现JS在body里加了一个div1对象
- 浏览器就会通知渲染引擎在页面新增一个div元素
- 新增的div元素所有属性都照抄div1对象
2.完整过程
- 在div1放入页面之前
对div1所有的操作都属于JS线程内的操作
- 在div1放入页面的时候
浏览器会发现JS的操作,然后通知页面渲染div1对应的元素
- 把div1放入页面之后
3.属性同步
http://js.jirengu.com/wodur/1/edit?html,js,output
- 标准属性
对div1的标准属性的修改,会被浏览器同步到页面中,例如id\classNaame\title
- data-*属性
跟标准属性一样
- 非标准属性
对非标准属性的修改,则会停留在JS线程中,不会同步到页面里