让前端飞程序员Web 前端开发

《前端JavaScript面试技巧》学习笔记(13) 页面加载与

2017-09-25  本文已影响109人  一杯浊酒

运行环境介绍:

问题

1.从输入url到得到HTML的详细过程
2.window.onload和DOMContentLoaded的区别
3.性能优化的几个示例


知识点

1: 页面加载过程
2: 性能优化
3: 安全性

1: 页面加载,渲染过程

 <body>
    <p>test</p>
    <p>![](loding.jpg)</p>
    <p>test</p>
</body>
window.onloadListener('load',function(){
//页面的全部资源加载完后才会执行,包括图片视频等
})

window.onloadListener('load',function(){
// DOM 渲染完即开始执行,此时的图片,视频可能还没有加载完
})

jQuory 和 zepto 使用的是 DOMContentLoaded;


2: 性能优化

加载资源优化

渲染优化

示例

![](min.png)
<script>
    var img1 = document.getElementById('img1')
    img1.src = img1.setAttribute('data-bigsrc') 
</script>
//未缓存 DOM 查询
var i 
for (var i = 0; i < document.getElementByTagName('p').length; i++) {
    // todo
}

//缓存了 DOM 查询
var pList = document.getElementByTagName('p');
var i 
for (var i = 0; i < pList.length; i++) {
    // todo
}
var listNode = document.getElementById('list')
    //插入10个li标签
var frag = document.createDocumentFragment();
var x, li
for (x = 0; x < 10; x++) {
    li = document.createElement('li')
    li.innerHTML = 'List item' + x
    frag.appendChild(li)
}
listNode.appendChild(frag)
//在快速操作时不执行事件,在停顿时执行,以减少计算次数
var textarea = document.getElementById('text')
var timeoutId
textarea.addEventListener('keyup', function() {
    if (timeoutId) {
        clearTimeout(timeoutId)
    }
    timeoutId = setTimeout(function() {
        //触发change事件
    }, 100);
})
window.onloadListener('load',function(){
//页面的全部资源加载完后才会执行,包括图片视频等
})

window.onloadListener('load',function(){
// DOM 渲染完即开始执行,此时的图片,视频可能还没有加载完
})
上一篇 下一篇

猜你喜欢

热点阅读