标签:响应 成员 第一章 开发 背景色 队列 creat name ref
性能优化
第一章:加载和执行
总结:
1)使用<script>标签的defer属性; defer属性只有ie4+和Firefox3.5+游览器支持
2)动态创建<script>元素来下载执行代码;
3)使用XHR对象下载js代码并注入页面中;
第二章:数据存储
总结:
第三章:获取dom元素优化
总结:
innerHTML和createElement():
innerHTML相对createElement在创建节点速度更快,大约是3.6倍。且大多数游览器均innerHTML使用更快,除webkit游览器,createElement相对会快些。
对DOM中特定元素操作时,开发者通常需要得到比getElementById()和getElementsByTagName()更好的控制。有时候为了得到需要的元素列表,你需要组合它们并遍历返回的节点,但这种繁密的过程效率低下。这时候,使用css选择器也是一种定位节点的便利途径,这时候javascript库提供了大量API,最新的游览器提供了一个名为quertSekectorAll()的原生DOM方法。这种方法自然比使用js和DOM来遍历查找元素快,同时对目前游览器的兼容性更高。
querySelector() 方法仅仅返回匹配指定选择器的第一个元素。如果你需要返回所有的元素,请使用 querySelectorAll() 方法替代。
<div id="menu">
<a>123</a>
<a>456</a>
</div>
<script>
//获取id,遍历该id下的所有a元素 ,打印出个数
var elements=document.getElementById(‘menu‘).getElementsByTagName(‘a‘);
console.log(elements.length) //2
//使用querySelectorAll(),兼容ie6及以上
var elements2=document.querySelectorAll(‘#menu > a‘);
console.log(elements2.length) //2
</script>
同样能查找获取,如果需要大量组合查询,使用下面的效率会更好,速度很提高很多。
重绘与重排
例如:
var bodyColor=document.body.style; //背景色被修改了2次,游览器需要刷新渲染队列 var bodyColor=document.body.style;
var bgcolor=bodyColor.background; =========================> v
bgcolor=‘red‘; 优化 bgcolor=‘red‘;
console.log(bgcolor); bgcolor=‘blue‘
bgcolor="blue"; console.log(bgcolor);
console.log(bgcolor); //这里只需要读取一次
改变样式:
var eldocument.getElementById("mydiv"); var el=document.getElementById("mydiv");
el.style.borderLeft=‘1px‘; =================> el.style.cssText=‘border-left:1px; border-right:2px; padding:5px;‘
el.style.borderRight=‘2px‘; 优化 //合并所有改变,然后一次处理。这样只会修改一次DOM,可以优化
el.style.padding=‘5px‘; //方法2: 使用className ,调用的是一个写好的css样式
//这段代码执行下来,会触发3次重排!!! el.className=‘active‘
标签:响应 成员 第一章 开发 背景色 队列 creat name ref
原文地址:https://www.cnblogs.com/Arthur123/p/9120159.html