同步加载
<link>标签是异步的。
script里的内容默认是同步模式,也叫阻塞模式
q:为什么script不是异步
a:如果script是异步,会出现DOM结构还没有解析完成,script中已经操作DOM的情况,会产生冲突
q:为什么script一般放在body最后
a:解析到script加载脚本时,会阻塞浏览器后续的处理,停止后续对DOM解构的解析,同时也会停止后续文件的加载、渲染,以及代码的执行,如DOM Tree, CSSOM的处理,CSS资源的加载,图片的加载,所以说一般放在body的最后 -> 只能极大可能性的减少阻塞,并不能完全解决阻塞问题
异步加载
异步加载的表现:浏览器并行的加载js文件,加载的同时不会阻塞浏览器后续的处理,如加载和渲染,这样的处理成为异步加载。
defer
IE8及以下到IE4都兼容,异步的加载js脚本文件,但是下载完了之后并不会立即