js中脚本延迟加载方式

文章类型:Javascript

发布者:test

发布时间:2023-03-28

在开发过程中,浏览器解析js会暂停其他解析,并且会阻塞,所以,在优化上面需要进行异步、延迟加载,总结一下加载方式

加载方式分为:阻塞、延迟、异步

一:defer(延迟)属性,只对外部文件有效,本地文件无效,主要是进行异步下载,遇到</html>时开支执行js文件,多个按顺序执行

 <script src="test1.js" defer="defer"></script>

二:async(异步) 只对外部文件有效,本地文件无效,通知浏览器异步下载并且执行,多个无顺序之分

 <script src="test1.js" async></script>

三:动态创建DOM,当页面前部加载完毕后在执行栈中挂载

<script>
function loadJS() {
let element = document.createElement("script")
element.src = "download.js"
document.body.appendChild(element)
}
if(window.addEventListener) {
window.addEventListener("load", loadJS, false)
}else if(window.attachEvent) {
window.attachEvent("onload", loadJS)
}else {
window.onload = loadJS
}
</script>

四:使用jQuery的getScript(),利用请求成功获取文件后再执行

$.getScript("outer.js",function(){
//回调函数,成功获取文件后执行的函数
console.log("脚本加载完成")
});

五:使用setTimeout,利用定时器延迟触发里面的方法

setTimeOut('getData()',1000)

六:让JS最后加载,放在代码最下面,按照浏览器从上往下执行逻辑,所有加载完成后再执行