注意
- link里面的css文件是并行请求下载的
- script里面的js文件是同步请求下载的
- html页面中的语句都是从上往下执行的
浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到
defer是“渲染完再执行”,async是“下载完就执行”,两者都是先下载,只是执行时间不同
如果有多个defer脚本,会按照它们在页面出现的顺序加载,而多个async脚本是不能保证加载顺序的
开始先下载html,渲染dom文档,然后根据css渲染dom。link里面的css文件是并行请求的
例子:
用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
浏览器开始载入html代码,发现标签内有一个标签引用外部CSS文件;
浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
浏览器继续载入html中部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
浏览器在代码中发现一个标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面 的代码;
服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
浏览器发现了一个包含一行Javascript代码的