script代码块的加载顺序
⽬录
⼀、script 代码块的默认加载和执⾏顺序:
从上到下依次边加载边解释执⾏。如果设计到了引⼊外部的js代码,那么该代码必须加载完成并解释执⾏完毕之后才能继续解析后⾯的HTML 和 js代码。
默认加载执⾏的顺序的问题:
如果加载的外部的js代码⽐较⼤,⽽且是⽹络js代码,可能会引起页⾯的假死状态。
⼀般的解决⽅案:
(1)将这些js代码放到 body 的末尾。
(2)给script标签添加async属性。让该引⼊的外部的js代码,实现异步加载。
(3) 给script标签添加 defer 属性。让该引⼊的外部的js代码,实现延迟加载。
⼆、 js的 async 异步加载介绍:
1:必须针对使⽤引⼊外部的js代码,该属性才能⽣效。
2: 如果给引⽤外部js代码的script添加了 async,那么该引⼊的js的执⾏特点如下:
(1)js代码的加载和后续的HTML内容是并⾏加载的。
(2)如果js代码先加载完了,HTML还没有加载完毕,会暂停HTML的解析。执⾏js代码,然后再解析。
注意:使⽤ async 属性的 script代码,各个script代码之间不应该存在上下的依赖关系,因为这些 async 的script代码加载完毕的顺序是不可控的。
<!DOCTYPE html>
<html lang="en">
<head>linux json格式化
<meta charset="UTF-8">
<title>Title</title>
<script src="js/test1.js" async></script>
</head>
<body>
<script src="js/test2.js" async></script>
卡迪夫eclipse<script>
console.log ("test");//先执⾏
</script>
</body>
</html>
三、js的 defer 延迟加载介绍:
1:必须针对使⽤引⼊外部的js代码,该属性才能⽣效。java底层逻辑书
2:所有使⽤了defer 属性的 script 的加载顺序是固定的。
3:延迟加载。所有的 defer 的script 和 后续的HTML 内容可以实现并⾏加载。
4:如果defer属性的script 代码加载完毕,需要等待HTML解析完毕之后才能执⾏js代码
5:如果defer 和 async 同时使⽤,那么 async 的优先级⾼于defer的。
relic<!DOCTYPE html>
<html lang="en">
<head>
python 到底是啥<meta charset="UTF-8">
<title>Title</title>
<script src="js/test1.js" defer>第⼆个执⾏</script>
html个人网页完整代码顺序</head>
<body>
<script src="js/test2.js" defer>最后执⾏</script>
<script>
console.log ("test");//先执⾏
</script>
</body>
</html>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论