直接操作 DOM(文档工具模型)之以是慢,紧张是由于以下几个缘故原由:
昂贵的打算本钱:在《高性能JavaScript》这本书中提到,把 DOM 和 JavaScript 各自想象成一个岛屿,它们之间用收费桥梁连接。每次直接操作 DOM,浏览器都须要重新打算页面的布局(reflow)和样式(repaint)。这是由于 DOM 的改变可能会影响到页面上其他元素的布局和显示。浏览器须要重新打算所有受影响元素的几何属性,这个过程是非常花费资源的。壅塞主线程:直接操作 DOM 的代码常日运行在主线程上,这意味着如果 DOM 操作繁芜或者频繁,它们会壅塞主线程,导致用户界面无法相应,直到 DOM 操作完成。这种壅塞会导致用户界面涌现明显的卡顿。频繁的垃圾回收:频繁地创建和销毁 DOM 元素会导致 JavaScript 引擎进行更多的垃圾回收操作。垃圾回收是一个打算密集型的过程,它会影响运用的性能。内存透露不可见的操作:有时候,开拓者可能会实行一些实际上并不会改变页面显示的 DOM 操作,但由于这些操作仍旧会引起布局和渲染的打算,因此会无谓地花费性能。繁芜的事宜处理:DOM 操作可能会触发各种事宜,如 resize 或 scroll 事宜。如果这些事宜处理程序繁芜或者实行韶光较长,它们可能会进一步影响性能。为理解决这些问题,当代前端框架如 React、Vue 和 Angular 采取了虚拟 DOM 等技能,通过在内存中进行操作和优化,减少了直接操作 DOM 的次数,从而提高了运用的性能和相应性。