网页渲染流程

 

 

 

 

 

 

首先是网页内容,输入到HTML解析器,HTML解析器解析,然后构建DOM树,在这期间如果遇到JavaScript代码则交给JavaScript引擎处理;如果来自CSS解析器的样式信息,构建一个内部绘图模型。该模型由布局模块计算模型内部各个元素的位置和大小信息,最后由绘图模块完成从该模型到图像的绘制。在网页渲染的过程中,大致可分为下面3个阶段。

  1.2.1.从输入URL到生成DOM树

  1. 地址栏输入URL,WebKit调用资源加载器加载相应资源;
  2. 加载器依赖网络模块建立连接,发送请求并接收答复;
  3. WebKit接收各种网页或者资源数据,其中某些资源可能同步或异步获取;
  4. 网页交给HTML解析器转变为词语;
  5. 解释器根据词语构建节点,形成DOM树;
  6. 如果节点是JavaScript代码,调用JavaScript引擎解释并执行;
  7. JavaScript代码可能会修改DOM树结构;
  8. 如果节点依赖其他资源,如图片\css、视频等,调用资源加载器加载它们,但这些是异步加载的,不会阻碍当前DOM树继续创建;如果是JavaScript资源URL(没有标记异步方式),则需要停止当前DOM树创建,直到JavaScript加载并被JavaScript引擎执行后才继续DOM树的创建。

  1.2.2.从DOM树到构建WebKit绘图上下文

  1. CSS文件被CSS解释器解释成内部表示;
  2. CSS解释器完成工作后,在DOM树上附加样式信息,生成RenderObject树;
  3. RenderObject节点在创建的同时,WebKit会根据网页层次结构构建RenderLayer树,同时构建一个虚拟绘图上下文。

  1.2.3.绘图上下文到最终图像呈现

  1. 绘图上下文是一个与平台无关的抽象类,它将每个绘图操作桥接到不同的具体实现类,也就是绘图具体实现类;
  2. 绘图实现类也可能有简单的实现,也可能有复杂的实现,软件渲染、硬件渲染、合成渲染等;
  3. 绘图实现类将2D图形库或者3D图形库绘制结果保存,交给浏览器界面进行展示。

  上述是一个完整的渲染过程,现代网页很多都是动态的,随着网页与用户的交互,浏览器需要不断的重复渲染过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值