一,浏览器的主要功能html
就是向服务器发出请求,在浏览器窗口中展现您选择的网络资源,资源通常是指 HTML 文档,也能够是 PDF、图片或其余的类型。资源的位置由用户使用 URI(统一资源标示符)指定。html5
二,浏览器的组件web
三,呈现引擎 数据库
/*渲染引擎主流程*/ 后端
webkit 主流程浏览器
Mozilla 的 Gecko 呈现引擎主流程 服务器
虽然 WebKit 和 Gecko 使用的术语略有不一样,但总体流程是基本相同的。Gecko 将视觉格式化元素组成的树称为“框架树”。每一个元素都是一个框架。WebKit 使用的术语是“呈现树”,它由“呈现对象”组成。对于元素的放置,WebKit 使用的术语是“布局”,而 Gecko 称之为“重排”。对于链接 DOM 节点和可视化信息从而建立呈现树的过程,WebKit 使用的术语是“附加”。有一个细微的非语义差异,就是 Gecko 在 HTML 与 DOM 树之间还有一个称为“内容槽”的层,用于生成 DOM 元素。网络
本文所讨论的浏览器——Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。框架
浏览器渲染引擎工做流程都差很少布局
呈现引擎一开始会从网络层获取请求文档的内容,内容的大小通常限制在 8k个块之内
解析 HTML 文档,逐个转化成DOM树。同时解析外部 CSS 文件以及样式元素生成CSSOM树。HTML 中这些带有视觉指令的样式信息将用于建立另外一个树结构:呈现树(Render树)
呈现树包含多个带有视觉属性(如颜色和尺寸)的矩形。这些矩形的排列顺序就是它们将在屏幕上显示的顺序。
呈现树构建完毕以后,进入“布局”,为每一个节点分配一个应出如今屏幕上的确切坐标。遍历呈现树,由用户界面后端层将每一个节点绘制出来。
这是一个渐进的过程。没必要整个 HTML 文档解析完毕以后,就会开始构建呈现树和设置布局。在不断接收和处理来自网络的其他内容的同时,呈现引擎会将部份内容解析并显示出来。
Render树是DOM树和CSSOM树构建完毕才开始构建的吗?这三个过程在实际进行的时候又不是彻底独立,而是会有交叉。会形成一边加载,一遍解析,一遍渲染的工做现象。
简而言之呢
这里面每一步都须要大量的工做,在传统的开发模式中,原生JS或JQ操做DOM时,浏览器会从构建DOM树,从头至尾执行一遍。
因此就有了虚拟DOM,将在下一篇文章总结虚拟DOM