首页 > 技术文章 > 浏览器怎么解析一个hmtl文档

yangwang12345 2017-10-25 16:05 原文

注意

  1. link里面的css文件是并行请求下载的
  2. script里面的js文件是同步请求下载的
  3. html页面中的语句都是从上往下执行的

浏览器是同步加载 JavaScript 脚本,即渲染引擎遇到

defer是“渲染完再执行”,async是“下载完就执行”,两者都是先下载,只是执行时间不同
如果有多个defer脚本,会按照它们在页面出现的顺序加载,而多个async脚本是不能保证加载顺序的
开始先下载html,渲染dom文档,然后根据css渲染dom。link里面的css文件是并行请求的

例子:
用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
浏览器开始载入html代码,发现标签内有一个标签引用外部CSS文件;
浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
浏览器继续载入html中部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
浏览器在代码中发现一个标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面 的代码;
服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
浏览器发现了一个包含一行Javascript代码的

推荐阅读