渲染引擎的功能就是渲染,在浏览器上显示请求的内容。
默认情况下,渲染引擎可以显示HTML和XML文档和图像。他也可以显示其他类型的插件(浏览器扩展)。例如显示PDF使用PDF浏览器插件。
我们将用一个特殊的章节来讨论插件和扩展。在这个章节中,我们重点来关注使用CSS样式渲染的HTML和图片。

一、渲染引擎:
我们的参考浏览器——FF、Chrome、Safrai都是建立在两个渲染引擎下。
FF使用Gecko——“自制”Mozilla渲染引擎,Safrai和Chrome都使用Webkit引擎。
Webkit是一个开源的渲染引擎,开始时适用于linux平台,但是经过Apple公司修改之后开始支持Mac和windows系统。
获取更多详细信息,参考:http://webkit.org。

二、主要流程:
渲染引擎开始从网络层获取请求的文档内容。通常会在8K的块。
下图2.0是渲染引擎的基本流程:

渲染引擎开始解析HTML文档,并且把HTML标签转化为一个被叫做“内容树”的DOM树,它将
解析CSS样式,包括外部样式和内嵌样式。样式数据和HTML中的显示控制将共同用来创建另一棵树——渲染树。
渲染树包含带有颜色和尺寸等显示属性的矩形,这个矩形的顺序与显示顺序一致。

渲染树构建完成后就是“布局”处理。也就是确定每个节点在屏幕上的确切显示位置。 下一个步骤就是绘制,
遍历渲染树并用UI后端层将每一个节点绘制出来。

一定要理解,这是一个缓慢(渐进)的过程,为了更好的用户体验,渲染引擎将尽可能的把内容显示到屏幕上。
它不会等到所有的HTML被解析完才开始创建和布局渲染树。它会在处理后续内容的同时把已经处理过的内容显示出来。
图2.1是Webkit主要流程示例:

图2.2是Gecko主要流程示例:

从图2.1和图2.2可以看出虽然Webkit和Gecko使用术语稍微不同,主要流程还是基本相同的。
Gecko 里把格式化好的可视元素称做“帧树”(Frame tree)。每个元素就是一个帧(frame)。 Webkit 则使用”渲染树”这个术语,渲染树由”渲染对象”组成。
Webkit 里使用”layout”表示元素的布局,Gecko则称为”Reflow”。Webkit使用”Attachment”来连接DOM节点与可视化信息以构建渲染树。
一个非语义上的小差别是Gecko在HTML与DOM树之间有一个附加的层 ,称作”content sink”,是创建DOM对象的工厂。我们会讨论流程中的每一部分。

转载于:https://www.cnblogs.com/snake-hand/archive/2013/06/12/3132880.html

浏览器是如何工作的系列:渲染引擎相关推荐

  1. 浏览器是怎样工作的:渲染引擎,HTML解析

    2019独角兽企业重金招聘Python工程师标准>>> 渲染引擎 渲染引擎的职责是--渲染,也就是把请求的内容显示到浏览器屏幕上. 默认情况下渲染引擎可以显示HTML,XML文档以及 ...

  2. 浏览器是如何工作的系列:页面布局

    布局(Layout/Reflow): 当渲染对象被创建并添加到树中,它们并没有位置和大小,计算这些值的过程称为layout或reflow. Html使用基于流的布局模型,意味着大部分时间,可以以单一的 ...

  3. 浏览器渲染引擎学习总结

    简单介绍浏览器渲染引擎情况 很多人就只会用浏览器,不知道浏览器的工作原理或者说浏览器最核心的东西,浏览器的内核是最核 心的东西,也叫做渲染引擎,那这个东西到底是干嘛的呢,下面本教程就为大家好好介绍一下 ...

  4. 浏览器内核-渲染引擎、js引擎

    一个完整的浏览器包含浏览器内核和浏览器的外壳(shell).浏览器核心--内核分成两部分:渲染引擎和js引擎.由于js引擎越来越独立,内核就倾向于只指渲染引擎. 1 浏览器组成结构 浏览器一般由七个模 ...

  5. 浏览器渲染引擎和JS引擎简介

    一.定义 浏览器内核分成两部分:渲染引擎和JS引擎. 由于JS引擎越来越独立,浏览器内核就倾向于单指渲染引擎. 渲染引擎:是一种对解析HTML.CSS等进行解析并将其显示在页面上的工具. JS引擎:读 ...

  6. 《十》浏览器基础及渲染引擎解析一个网页的过程、JavaScript 引擎解析 JavaScript 代码的过程

    浏览器:是安装在电脑里面的一个软件,能够将页面内容渲染出来呈现给用户查看,并让用户与网页进行交互. 服务器其实就是性能比较高的计算机,这些计算机 24 小时不断电. 不关机. 开发者在本地开发出 HT ...

  7. 为什么需要考虑浏览器兼容,浏览器渲染引擎在浏览器中的作用是什么样的?

    为什么需要做浏览器兼容?–渲染引擎在浏览器中的作用 Web浏览器的体系结构 User Interface:用户界面.可以使最终用户能够与界面上所有可视元素进行交互. Browser Engine:浏览 ...

  8. 【前端】浅谈浏览器内核:渲染引擎、JS引擎

    浏览器内核是什么? 简而言之,浏览器内核就是把我们编写的代码转换为页面的中控件. 虽然现在大家谈起浏览器内核时,多指代渲染引擎(Rendering engine 或 layout engineer). ...

  9. WEB前端底层知识--浏览器是如何工作的

    随笔- 6  文章- 2  评论- 103 WEB前端底层知识--浏览器是如何工作的 概述 对于一直从事B/S架构(B/S也是一种C/S架构,只不过C/S自己写显示而B/S有相对统一的显示引擎实现而已 ...

最新文章

  1. 事件ID 5775 NETLOGON
  2. Unity之Update与FixedUpdate区别
  3. 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
  4. 电脑动态屏保_8款电脑软件,每一款都能让你的电脑更好用
  5. 图像和流媒体 -- 详解YUV数据格式
  6. docker安装教程-centos
  7. tomcat加白名单_超详细的tomcat管理页面各类型配置总结
  8. java 蓝桥杯 石子游戏(题解)
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的疾病报销管理系统
  10. 安装构建以太坊钱包Parity
  11. spring boot单元测试(转)
  12. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询
  13. Maven—Eclipse中配置Maven
  14. slxrom+v.21+原生android+4.2,小米4移动联通版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  15. URLClassLoader加载class到当前线程类加载器【zt】
  16. Unity3D开发Android游戏(二)Hello world
  17. 计算机桌面不能显示器,电脑显示屏亮但是主机已开机无法显示桌面
  18. php 朋友圈留言,php实例-PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...
  19. 使用sendBeacon进行前端数据上报
  20. zblog技术导航网全站源码+数据

热门文章

  1. mysql unix_timestamp 格式化_FROM_UNIXTIME 格式化MYSQL时间戳函数_MySQL
  2. react登录页面_React 实现路由拦截
  3. Tableau上面地图与条形图结合_何为计算的详细级别,认识Tableau中的Level of Detail...
  4. oracle 11g函数包缓存,Oracle11新特性——PLSQL函数缓存结果(一)
  5. qt mysql查询中文相等_请教:Qt如何实现查询数据库中具有中文表名的表
  6. asp.net mvc项目实例_降龙-第13章:MVC开发准备
  7. python教学视频a_2019何老师一个月带你玩转Python分布式爬虫实战教程视频(视频+源码)...
  8. 更新fielddata为true_线程与更新UI,细谈原理
  9. macos安装低版本php,mac下安装多个版本PHP及切换
  10. LeetCode面试题03. 数组中重复的数字