javascript针对dom相关的优化心得

javascript针对dom相关的优化心得

ID:8966307

大小:19.50 KB

页数:2页

时间:2018-04-13

javascript针对dom相关的优化心得_第1页
javascript针对dom相关的优化心得_第2页
资源描述:

《javascript针对dom相关的优化心得》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、JavaScript针对Dom相关的优化心得组内同时总结的关于javascript性能优化注意些节。记录一下。1.批量增加Dom尽量使用修改innerHTML的方式而不是用appendChild的方式;因为使用innerHTML开销更小,速度更快,同时也更加内存安全.有一点需要注意的是,用innerHTML方式添加时,一定不要在循环中使用innerHTML+=的方式添加,这样反而会使速度减慢;而是应该中间用array缓存起来,循环结束后调用xx.innerHTML=array.join(‘’);的方式,或者至少保存到string中再插到innerHTML中.针对用户列表一块采用

2、这种方式优化后,加载速度提升一倍.2.单个增加Dom这里是指要将新节点加载到一个内容不断变化的节点的情形,对于内容稳定的节点来说,随便怎么加都没有问题.但是对于有动态内容的节点来说,为其添加子节点尽量使用domappend的方式.这是因为,domappend不会影响到其他的节点;而如果修改innerHTML属性的话,该父节点的所有子节点都会从dom树中剥离,再根据新的innerHTML值来重绘子节点dom树;所有注册到原来子节点的事件也会失效.综上,如果在一个有动态内容的节点上出现了innerHTML+=的代码,就该考虑是否有问题了.3.创建Dom节点用createElemen

3、t方式创建一个dom节点,有一个很重要的细节:在执行完createElement代码之后,应该马上append到dom树中;否则,如果在将这个孤立节点加载到dom树之前所做的赋值它的属性和innerHTML的操作都会引发该dom片段内存无法回收的问题.这个不起眼细节,一旦遇到大量dom增删操作,就会引发内存的灾难.4.删除Dom节点删除dom节点之前,一定要删除注册在该节点上的事件,不管是用observe方式还是用attachEvent方式注册的事件,否则将会产生无法回收的内存.另,在removeChild和innerHTML=’’二者之间,尽量选择后者.因为在sIEve(内存

4、泄露监测工具)中监测的结果是用removeChild无法有效地释放dom节点.5.创建事件监听现有的js库都采用observe方式来创建事件监听,其实现上隔离了dom对象和事件处理函数之间的循环引用,所以应该尽量采用这种方式来创建事件监听.6.监听动态元素Dom事件默认是向上冒泡的,发生在子节点中的事件,可以由父节点来处理.Event的target/srcElement仍是产生事件的最深层子节点.这样,对于内容动态增加并且子节点都需要相同的事件处理函数的情况,可以把事件注册上提到父节点上,这样就不需要为每个子节点注册事件监听了.同时,这样做也避免了产生无法回收的内存.即使是用P

5、rototype的observe方式注册事件并在删除节点前调用stopObserving,也会产生出少量无法回收的内存,所以应该尽量少的为dom节点注册事件监听.所以,当代码中出现在循环里注册事件时,也是我们该考虑事件上提机制的时候了.7.HTML提纯HTML提纯体现的是一种各负其责的思想.HTML只用来显示,尽量不出现和显示无关的属性.比如onclick事件,比如自定义的对象属性.事件可以用前面的方法避免,对象属性指的是这样的一种情景:通常情况下,动态增加的内容都是有个对象和它对应,比如聊天室的用户列表,每个显示用户的dom节点都有一个user对象和它对应,这样在html中,

6、应该仅保留一个id属性和user对象对应,而其他的信息,则应通过user对象去获取.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。