DOM优化

由于Dom方法和ECMAScript方法就好比两个独立的岛屿,两者之间如果过多交互会带来一些性能消耗。我们应当尽量减少两者的交叉使用。

例如JS操作Dom

 

1、chrome等webkit浏览器下:Dom方法比innerHTML方法性能要好。

2、firefox、IE、opera等浏览器反而是innerHTML比Dom方法性能好。

 

 

DOM优化方法:

减少dom操作

1、采用节点克隆方法

     - cloneNode

2、访问元素集合

     - 尽量采用局部变量(把常用到的值存到一个局部变量里面)

3、元素节点

     - 尽量用只获取元素的节点方法(例如childNodes -> 元素节点、文本节点; children -> 元素节点; firstChild、firstElementChild等等)

4、选择器API:

     - 利用querySelector、querySelectotAll

 

Dom与浏览器,从浏览器的方向着手优化:

关键点:

1、重排:改变页面的内容

2、重绘:浏览器显示内容

尽量减少以上两点,可以这样做:

1、js的执行顺序:添加dom节点的时候,尽量在appendChild前添加操作。

2、合并dom操作。例如不用element.style...转而使用cssText

3、缓存布局信息。例如把js控制到的样式在改变前先存在一个变量里,以免没次调用到的时候都重新获取一次。

4、文档碎片:

     - createDocuemtFragment()  在一个循环创建html结构的js中,先等创建好dom之后再一次性插入dom中。

 

DOM与事件委托

DOM与前端模板(更好的分离逻辑和视图,MVC架构的基础。)

参见:http://www.baiduux.com/blog/2011/07/11/introduction-of-template/

posted @ 2012-12-18 02:11  windrainpy-前端开发  阅读(237)  评论(0编辑  收藏  举报