javascript-性能优化

javascript-性能优化

ID:39331146

大小:1.10 MB

页数:53页

时间:2019-07-01

javascript-性能优化_第1页
javascript-性能优化_第2页
javascript-性能优化_第3页
javascript-性能优化_第4页
javascript-性能优化_第5页
资源描述:

《javascript-性能优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、浅谈JavaScript性能优化龙刚(@RainoXu)TaobaoUEDwww.rainoxu.com优化JavaScript性能,使它运行足够快一个关键因素:运行的时间响应时间与用户的体验0.1s用户觉得很流畅1.0s用户的操作可能偶尔受到影响,并且用户已经能感觉到有些不流畅10s对用户的影响比较严重,需要相应的进度提示。用户也会有一些沮丧WhatToDo&&HowToDo?管理作用域操作数据流控制ReflowDOM操作长时间运行的脚本处理管理作用域functionadd(num1,num2){returnnum1+num2;}varresult=add(5,

2、10);使用局部变量局部变量存在于活动对象中,解析器只需查找作用域中的单个对象vara=1;functiontest(){//对变量a进行一系列操作}functiontest2(){vara=1;//对变量a进行一系列操作}另一个例子(function(win,S,undefined){......vardoc=win['document'],loc=location,EMPTY='',......})(window,'KISSY');数据操作使用局部变量,它是最快的缓存频繁使用的对象、数组及相关的属性值obj.name比obj.xxx.name访问更快,访问属性

3、的速度,与其在对象中的深度有关“.”操作的次数直接影响着访问对象属性的耗时varobjName=obj.name;KISSY.add('switchable',function(S,undefined){varDOM=S.DOM,Event=S.Event,......});functionprocess(data){if(data.count>0){for(vari=0;i

4、>0){for(vari=0;i标准浏览器逐个拷贝到一个新数组中=>ForIE大部分JS库都有提供将Array-Like的对象转变成Array的方法(如KISSY提供的makeArray()方法);部分JS库在返回元素集合时,已预处理成Array(例子:YUI的DOM相关操作方法)遍历NodeList时,不做对当前NodeList相关结构有影响的DO

5、M操作,并且如之前所提到的,要缓存一些频繁使用到的属性值,以避免杯具发生。vardivs=document.getElementsByTagName('DIV');//假定页面中有div,所以divs.length是大于0的for(varidx=0;idx

6、eList的引用,任何对其相关的DOM操作都会立即反应在这个NodeList上面通过不断地往document.body下插入div节点,for循环的终止条件(div.length也随之改变)失效,陷入死循环。LiveNodeListvsStaticNodeList理论上,静态的东西应该是最快的,但是实际情况是,LiveNodeList更快。LiveNodeListvsStaticNodeList原因:目前市场上的浏览器,对LiveNodeList做了缓存LiveNodeListvsStaticNodeList结论:优先使用LiveNodeList,通过选择器获取以

7、后,再进一步转换成数组来使用。这也是目前许多JS库在使用的方案。DOM操作指明操作DOM的contextYUI:ArraygetElementsByClassName(className,tag,root,apply,o,overrides)KISSY:Arrayquery(selector,context)即便是用原生的JS,也应该指明:context.getElementsByTagName()DOM操作增删、修改节点使用DocumentFragment使用cloneNode()复制一份目标节点来处理如果是直接修改DOM,请先将其di

8、splay

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

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

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