开始解析HTML
浏览器通过网络接收页面的html数据时,它会立即设置解析器将html转换为文档对象模型(DOM).文档对象模型是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以从程序中对该结构进行访问,从而改变文档的结构、样式和内容。DOM将文档解析成一个由节点和对象组成的结构集合。简言之,它会将web页面和脚本或程序语言连接起来。
解析第一步就是讲HTML分解并表示为开始标记、结束标记及其内容标记,然后它可以构造DOM。
将标签如div、html称为标签分为开始标记、结束标记;块里面的内容 称为内容标记获取外部资源
将解析器遇到外部资源(如css或javascript文件)时,解析器将提取这些文件。解析器在加载css文件时继续运行,此时会阻止页面渲染,直到资源加载解析完。 js文件略有不同,默认情况下,解析器会在加载js文件然后进行解析同时会阻止对html的解析。可以将两个属性添加到脚本标签中以减轻这种情况:defer和async。两者都允许解析器在后台加载js文件的同时继续运行。但是他们的执行方式不同。
defer:表示文件的执行将被延迟,直到文档的解析完成为止。如果多个文件具有defer属性,则将按照页面放置的顺序依次执行。
async:意味着文件将在加载后立即执行,异步执行。这可能实在解析过程中或在解析过程之后执行的,因此不能保证异步脚本的执行顺序。预加载资源: 元素的 rel 属性的属性值preload能够让你在你的html页面中
元素内部书写一些声明式的资源获取请求,可以指明那些资源实在页面加载完成后即刻需要的。对于这种即刻需要的资源,你可能希望在页面加载的生命周期的早期阶段就开始获取,在浏览器的主渲染机制介入前就进行预加载。这一机制使得