JavaScript优化方法.doc_第1页
JavaScript优化方法.doc_第2页
JavaScript优化方法.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaScript优化方法作为一名网站开发Web前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上搜索到的网站性能优化多是翻译转载自Yahoo14条或34条。Yahoo的优化建议关注在大的方面,而本文将着重分析JavaScript的优化细节。一、避免出现脚本失控不论什么脚本,在任何时间、任何浏览器上执行,都不应该超过100毫秒。如果实际执行的时间长于这个底限,一定要将进程分解成若干更小的代码段。脚本失控基本上有以下四个方面的原因:1. 在循环中执行了太多的操作解决这个问题的诀窍就是用下面这两个问题来评估每个循环:这个循环必须要同步执行么?循环里面的数据,必须要按顺序执行么?如果1和2都可以否定,那么建议使用setTimeout方式将循环体切分成小块进行异步处理,将循环中的定义变量及初始化操作放到循环外。2. 臃肿的函数体在JavaScript中,我们应该尽可能的用局部变量来代替全局变量!理解JavaScript作用域链。理解原型链。3. 过多的递归使用迭代方式替代递归,采用memoization技术优化递归,斐波那契数列的递归算法优化。4. 过多的DOM调用在Web开发中,JavaScript的一个很重要的作用就是对DOM进行操作。可你知道么?对DOM的操作是非常昂贵的,因为这会导致浏览器执行回流(reflow)操作。而执行了过多的回流操作,你就会发现自己的网站变得越来越慢了。我们应该尽可能的减少DOM操作。回流操作主要会发生在几种情况下:改变窗体大小。更改字体。添加移除stylesheet块。内容改变哪怕是输入框输入文字。CSS虚类被触发如 :hover。更改元素的className。当对DOM节点执行新增或者删除操作或内容更改时。动态设置一个style样式时(比如element.style.width=10px)。当获取一个必须经过计算的尺寸值时,比如访问offsetWidth、clientHeight或者其他需要经过计算的CSS值(在兼容DOM的浏览器中,可以通过getComputedStyle函数获取;在IE中,可以通过currentStyle属性获取)。解决问题的关键,就是限制通过DOM操作所引发回流的次数:1.在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入。2.在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除:(1)通过removeChild()或者replaceChild()实现真正意义上的删除。(2)设置该元素的display样式为“none”。修改操作完成后,将上面这个过程反转过来,建议使用第2种方式。3.CSS部分另外一个经常引起回流操作的情况是通过style属性对元素的外观进行修改,如element.style.backgroundColor = blue;每次修改元素的style属性,都肯定会触发回流操作,要解决这个问题可以:(1)使用更改className的方式替换style.xxx=xxx的方式。(2)使用style.cssText = ;一次写入样式。(3)避免设置过多的行内样式(4)添加的结构外元素尽量设置它们的位置为fixed或absolute(5)避免使用表格来布局(6)避免在CSS中使用JavaScript expressions(IE only)4.将获取的DOM数据缓存起来。这种方法,对获取那些会触发回流操作的属性(比如offsetWidth等)尤为重要。5.当对HTMLCollection对象进行操作时,应该将访问的次数尽可能的降至最低,最简单的,你可以将length属性缓存在一个本地变量中,这样就能大幅度的提高循环的效率。二、避免大字符串字面量对象操作,如 字符串.lenth,尽量转换为new String(字符串)后再进行操作三、在做字符查找替换等操作时善用正则表达式快速掌握ECMAScript正则表达式。四、减少语句,利用运算符优先级实现if else表达式,使用三元表达式,使用连续表达式(看情况,将损失程序可读性)利用运算符优先级实现if else表达式。五、将CSS,JS文件合并到一个文件六、避免Javascript事件绑定出现内存泄漏这些内存泄漏的出现,往往是由于Javascript对象与对象之间的循环应用。七、使用WEB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论