js-关于性能优化的一些学习总结
2016-12-05 13:31
691 查看
性能优化的方法有:
1、减少HTTP请求:合并CSS/JS,使用CSS sprite等
2、压缩CSS/JS/图片
3、样式表放头部,JS放body底部:JS放在head中,将会等到js全部下载解析和执行后才会显示页面内容。
4、减少DOM操作,DOM操作很消耗性能,另外注意HTMLCollection和NodeList。这两个对象是动态的,每次访问都会进行一次查询。在迭代中避免重复访问。
历史上的DOM集合接口。主要不同在于HTMLCollection是元素集合而NodeList是节点集合(即可以包含元素,也可以包含文本节点)。所以 node.childNodes 返回 NodeList,而 node.children 和 node.getElementsByXXX 返回 HTMLCollection 。(来自知乎贺师俊)
需要时可以将NodeList对象转换为数组。
querySelectorAll()方法返回的是一个NodeList实例,类似于一组元素的快照,非动态。
5、关于重绘(repaint)和重排(reflow)。
重绘并不一定导致重排,比如修改某个元素的颜色,只会导致重绘;而重排之后,浏览器需要重新绘制受重排影响的部分。导致重排的原因有:
添加或删除DOM元素
元素位置、大小、内容改变
浏览器窗口大小改变
滚动条出现
6、事件委托
利用事件冒泡,指定一个事件处理程序,管理某一个类型的所有事件。在DOM树中尽量搞的层次上添加一个事件处理程序,这样可以只取得一个DOM元素,添加一个事件处理程序
1、减少HTTP请求:合并CSS/JS,使用CSS sprite等
2、压缩CSS/JS/图片
3、样式表放头部,JS放body底部:JS放在head中,将会等到js全部下载解析和执行后才会显示页面内容。
4、减少DOM操作,DOM操作很消耗性能,另外注意HTMLCollection和NodeList。这两个对象是动态的,每次访问都会进行一次查询。在迭代中避免重复访问。
历史上的DOM集合接口。主要不同在于HTMLCollection是元素集合而NodeList是节点集合(即可以包含元素,也可以包含文本节点)。所以 node.childNodes 返回 NodeList,而 node.children 和 node.getElementsByXXX 返回 HTMLCollection 。(来自知乎贺师俊)
需要时可以将NodeList对象转换为数组。
function convertToArray(nodes){ var array=null; try{ array=Array.prototype.slice.call(nodes,0);//针对非IE }catch(ex){ array=new Array(); for(var i=0,len=nodes.length;i<len;i++){ array.push(nodes[i]; } } return array; }
querySelectorAll()方法返回的是一个NodeList实例,类似于一组元素的快照,非动态。
5、关于重绘(repaint)和重排(reflow)。
重绘并不一定导致重排,比如修改某个元素的颜色,只会导致重绘;而重排之后,浏览器需要重新绘制受重排影响的部分。导致重排的原因有:
添加或删除DOM元素
元素位置、大小、内容改变
浏览器窗口大小改变
滚动条出现
6、事件委托
利用事件冒泡,指定一个事件处理程序,管理某一个类型的所有事件。在DOM树中尽量搞的层次上添加一个事件处理程序,这样可以只取得一个DOM元素,添加一个事件处理程序
相关文章推荐
- 关于程序性能优化基础的一些个人总结
- 关于客户端JS性能的一些优化的小技巧
- 关于程序性能优化基础的一些个人总结
- Unity性能优化一些学习总结
- 关于程序性能优化基础的一些个人总结
- 关于RDLC报表的一些总结,希望对正在学习使用它的朋友有所帮助
- 【转载】Flex垃圾回收和性能优化的一些总结
- Asp.net性能优化总结[关于数据处理相关的优化]
- 关于学习asp.net的一些总结
- 关于flex性能调优相关的一些总结
- 一些关于Java面向对象学习、培训机构培训、大学生活状态的感悟和总结
- Flex]Flex编程注意之性能优化、垃圾回收的一些总结
- 关于一些学习php的总结
- JS中的关于类型转换的性能优化
- 关于开发游戏时性能优化的一些方法
- Flex编程注意之性能优化、垃圾回收的一些总结
- sql 学习之二(sql常见性能优化总结)
- 总结:今天在MSN Group里面和一些朋友谈ASP.net程序的性能优化
- 关于系统性能优化的一些操作和泛型的应用(第二天)
- Flex编程注意之性能优化、垃圾回收的一些总结