更新时间:2021年10月25日10时54分 来源:传智教育 浏览次数:
在引入JavaScript脚本代码时,页面的下载和渲染都会暂停,等待脚本执行完成后才会继续这种加载方式称为“同步加载”。“同步加载”也称“阻塞模式”,它是JavaScript社代码默认的加载方式,之所以要同步加载,是因为]avaScript中可能有输出、修改等行为,所以默认同步执行才是安全的。
定同步加载”也有弊端。同步加载完毕之前,页面内容是无法正常显示的,这就给网站访问者带来不好的用户体验。因此在代码加载过程中,我们需要让那些负责页面内结构、样式的代码先加载,给用户呈现一个美观的界面效果,然后再加载后续的脚本代码,这时就需要用到“异步加载”。“异步加载”也称“非阻塞模式”,用于降低JavaScript阻塞问题对页面造成的影响,使用<script>标记属性async和defer都可以设置“异步加载”。下面将介绍这两种属性的使用方法。
1)async
添加async属性后,页面会先下载脚本文件,不阻塞结构代码、样式代码的执行,当脚本文件下载完成后再执行该脚本文件,示例代码如下:
<script src="http: //js.test/file.js" async></script>
2)defer
添加defer属性后,页面会先下载脚本文件,不阻塞结构代码、样式代码的执行,当页面效果加载完成之后,再执行脚本代码,示例代码如下:
<script src="http: //js.test/ile.js"defer></script>
值得一提的是,虽然async和defer于设置异步加载,但二者在脚本代码下载完成之后的执行方式有很大差别。添加async属性,当脚本代码下载完成之后会立即执行脚本代码:添加defer属性,会等页面效果加载完成之后再加载脚本代码。