interview-answe icon indicating copy to clipboard operation
interview-answe copied to clipboard

180.async 和 defer

Open webVueBlog opened this issue 4 years ago • 1 comments

[js]

webVueBlog avatar Apr 15 '20 06:04 webVueBlog

脚本阻塞问题实际有两种解决方案 —— async 和 defer。

浏览器遇到 async 脚本时不会阻塞页面渲染,而是直接下载然后运行。这样脚本的运行次序就无法控制,只是脚本不会阻止剩余页面的显示。当页面的脚本之间彼此独立,且不依赖于本页面的其它任何脚本时,async 是最理想的选择。

使用 defer 属性,脚本将按照在页面中出现的顺序加载和运行:

<script defer src="js/vendor/jquery.js"></script>

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

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

添加 defer 属性的脚本将按照在页面中出现的顺序加载,因此第二个示例可确保 jquery.js 必定加载于 script2.js 和 script3.js 之前,同时 script2.js 必定加载于 script3.js 之前。

webVueBlog avatar Apr 15 '20 06:04 webVueBlog