JS运行环境(更新中)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

网页渲染

加载过程

从用户输入URl按下回车一直到用户能看到界面期间经历了什么

1.DNS解析缓存将域名解析为IP

2.进行TCP协议连接三次握手

浏览器根据IP地址发送请求得到响应

渲染过程

浏览器开始解析html

      --预解析将所有外部的资源发请求出去

      --解析html生成DOM树img不阻塞DOM

      --解析CSS生成CSSOM树css放head先css后html否则放body最后先css+html后css渲染重复

     --合并成一个render

     --遇到script标签暂停渲染优先加载并执行js代码完成后继续放body最后

     --最终展示界面

断开TCP连接四次挥手确保数据的完整性

const img1 = document.getElementById('img1')
img1.onload = function () {
    console.log('img loaded')//2
}

window.addEventListener('load', function () {
    console.log('window loaded')//3资源全部加载完才执行包括图片
})

document.addEventListener('DOMContentLoaded', function () {
    console.log('dom content loaded')//1DOM渲染完即可执行图片视频可能未下载
})

性能优化

加载更快 

减少资源体积压缩代码

减少访问次数

        -合并代码script文件合并

        -SSR服务端渲染将网页和数据一起加载一起渲染非SSR是先加载网页再加载并渲染数据

        -缓存如内容缓存。静态资源加hash后缀根据文件内容计算hash文件内容不变则hash不变则url不变url和文件不变则会自动触发http缓存机制返回304

        -更快的网络CDN根据地狱返回

渲染更快

CSS放headjs放body最下面

懒加载给一张默认图片上滑加载更多

缓存DOM查询

多个DOM操作一起插入DOM结构

今早开始JS执行用DOMContentLoaded触发

节流防抖

 

防抖用户输入结束时才触发change事件

节流拖拽获取元素位置每隔100ms触发一次

// 防抖
function debounce(fn, delay = 500) {
    // timer 是闭包中的
    let timer = null

    return function () {
        if (timer) {
            clearTimeout(timer)
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)
            timer = null
        }, delay)
    }
}

input1.addEventListener('keyup', debounce(function (e) {
    console.log(e.target)
    console.log(input1.value)
}, 600))


// 节流
function throttle(fn, delay = 100) {
    let timer = null

    return function () {
        if (timer) {
            return
        }
        timer = setTimeout(() => {
            fn.apply(this, arguments)//argument是为了传e,因为外面包裹了一层函数
            timer = null
        }, delay)
    }
}

div1.addEventListener('drag', throttle(function (e) {
    console.log(e.offsetX, e.offsetY)
}))

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6