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最后加载,放在代码最下面,按照浏览器从上往下执行逻辑,所有加载完成后再执行