WebKit简介及工作流程

简介: WebKit简介及工作流程

 WebKit的简介

       WebKit 是一个开源的浏览器引擎,最初由苹果公司开发,用于其 Safari 浏览器中。它不仅包括了 HTML、CSS 和 JavaScript 的解析与渲染能力,还集成了网络资源加载、图形处理、排版布局

等功能,为用户提供了丰富的网页浏览体验。WebKit 的架构设计围绕几个关键组件展开,包括多进程模型、渲染引擎(WebCore)、JavaScript 引擎(JavaScriptCore 或 V8)等。

WebKit的发展历史

       WebKit 的发展和历史可以追溯到1998年,当时它是以 KHTML 和 KJS 项目的形式存在。KHTML 是 KDE 小组开发的开源 HTML 渲染引擎,具有清晰的源码结构和极快的渲染速度。2001年,苹果公司看中了 KHTML 和 KJS 的潜力,并将其引入 Mac OS X 操作系统中,随后基于此开发了 WebKit。


       苹果公司选择 KHTML 是因为在比较了 Netscape(现在的 Firefox)的 Gecko 引擎和 KHTML 引擎后,认为 KHTML 拥有更清晰的架构,并且比 Gecko 更小巧。苹果工程师 Don Melton 在 2001 年 6 月 25 日正式从 KHTML 分支出来,在苹果内部开始了 WebKit 的研发。2003 年,苹果推出了装备 WebKit 引擎的浏览器 Safari。


       WebKit 和 KHTML 之间的合作关系最初是良好的,但随着时间的推进,两者之间的代码交换变得越来越困难。2005 年,KDE 开发者开始公开攻击苹果的做法,并称合作关系已经彻底瓦解。同年,苹果宣布将 WebKit 完全开源,KDE 和苹果的关系也得到了一些改善。


       Google 加入 WebKit 的开发是在 2008 年 Chrome 浏览器推出前后的事情。Chrome 浏览器使用 WebKit 引擎是 Android 团队的建议,但主要使用的其实还是从 KHTML 那里来的 WebCore。Google 的开发者开始提交大部分的 WebKit 更改,但最终决策权还是苹果的。


       2013 年,Opera 宣布转向 WebKit 引擎,但随后又放弃了 WebKit 引擎,跟随 Google 的新开发的 Blink 引擎。WebKit 项目催生了面向移动设备的现代 Web 应用程序,广泛应用于 iPhone、Android、Nokia 的 Series 60 浏览器等移动平台上的浏览器内核引擎。


       WebKit 的发展历史显示了其作为开源项目的重要性和影响力,它不仅推动了 Web 技术的发展,也为移动设备上的 Web 浏览体验做出了重要贡献。

WebKit 的工作流程

WebKit 的工作流程大致如下:请求与响应:用户输入 URL 后,浏览器进程发起网络请求,获取 HTML、CSS、JavaScript 等资源。

HTML 解析与 DOM 构建:HTML 解析器将 HTML 字符流解析成 DOM 树。

CSS 解析与 Render Tree 构建:CSS 解析器解析 CSS 规则,并与 DOM 树结合生成渲染树。

布局计算:计算渲染树中元素的精确位置和尺寸,称为布局或重排。

绘图:将布局后的元素绘制到屏幕上,这个过程称为绘图或重绘。

JavaScript 执行与 DOM 修改:JavaScript 引擎执行脚本,可能修改 DOM 结构或样式,触发重新布局和绘图。

事件处理与交互:用户交互触发事件,可能影响页面状态。

资源加载与缓存:静态资源如图片、字体通过网络加载,可能利用缓存机制。

       WebKit 通过这些步骤将网页代码转化为用户界面,实现网页的渲染和交互。了解 WebKit 的结构和工作原理有助于前端开发者优化网页性能和用户体验。

WebKit流程详细描述


       假设用户想要访问一个新闻网站,网址为 http://www.example.com。以下是 WebKit 在加载和渲染这个网页时所经历的步骤:


发起网络请求: 用户在浏览器地址栏输入网址并按下回车键。WebKit 的网络模块接收到这个请求,并发起一个 HTTP 请求到服务器。


接收响应内容: 服务器响应请求,将网页的 HTML、CSS 和 JavaScript 等资源发送回用户的浏览器。


HTML 解析: WebKit 的 HTML 解析器开始工作,解析服务器返回的 HTML 内容。解析器读取 HTML 标记,将其转换成 DOM(文档对象模型)节点,并构建 DOM 树。DOM 树是网页结构的内存表示,包含了所有 HTML 元素及其属性。


CSS 解析: 同时,CSS 解析器解析外部或内部 CSS 样式。解析器读取 CSS 规则,并将它们转换成 CSSOM(CSS 对象模型)树。


构建渲染树: WebKit 将 DOM 树和 CSSOM 树结合起来,生成渲染树。渲染树是一个包含所有可见元素及其计算样式的树状结构,它决定了页面的布局和呈现。


布局计算: WebKit 的布局引擎根据渲染树中的信息计算每个元素在页面上的位置和尺寸。这个过程称为“布局”或“重排”。布局引擎会考虑元素的宽度、高度、边距、填充、浮动等样式属性。


绘制: 一旦所有元素的位置和尺寸确定,WebKit 进入绘制阶段。渲染引擎遍历渲染树,将每个元素绘制到屏幕上。这个过程可能涉及到文本排版、图像渲染、颜色填充等操作。


JavaScript 执行: 如果页面包含 JavaScript 脚本,WebKit 的 JavaScript 引擎将执行这些脚本。脚本可能会修改 DOM 树或 CSSOM 树,从而触发额外的布局和绘制工作。


事件处理: 用户与页面交互,如点击链接或按钮,WebKit 会捕获这些事件并触发相应的 JavaScript 事件处理器,这可能会导致 DOM 或 CSSOM 的进一步修改。


资源加载与缓存: 页面中的图片、视频和其他媒体资源也会通过网络加载。WebKit 可能会使用缓存来存储这些资源,以加快后续访问的速度。


合成与显示: 最后,WebKit 将所有绘制的元素合成为最终的页面,并显示在用户的屏幕上。如果页面包含动画或过渡效果,WebKit 将根据需要更新渲染树,并重复上述步骤以刷新屏幕显示。


       通过这个例子,我们可以看到 WebKit 如何将静态的 HTML、CSS 和 JavaScript 代码转换为动态的、可交互的网页。WebKit 的高效工作流程确保了网页的快速加载和流畅渲染。    

相关文章
|
搜索推荐 数据挖掘 C++
数据分析方法-对比分析和用户画像
数据分析方法-对比分析和用户画像
471 1
数据分析方法-对比分析和用户画像
若依框架 --- ruoyi 表格的设置
若依框架 --- ruoyi 表格的设置
2223 0
|
JSON 人工智能 自然语言处理
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
|
安全 Go 数据库
Navicat-Cracker NavicatCrackerDlg.cpp:332 -3All patch solutions are 解决Navicat 162版本注册问题的方法与分析【详细步骤】
Navicat-Cracker NavicatCrackerDlg.cpp:332 -3All patch solutions are 解决Navicat 162版本注册问题的方法与分析【详细步骤】
1395 0
|
机器学习/深度学习 自然语言处理 算法
数据准备指南:10种基础特征工程方法的实战教程
在数据分析和机器学习中,从原始数据中提取有价值的信息至关重要。本文详细介绍了十种基础特征工程技术,包括数据插补、数据分箱、对数变换、数据缩放、One-Hot编码、目标编码、主成分分析(PCA)、特征聚合、TF-IDF 和文本嵌入。每种技术都有具体应用场景和实现示例,帮助读者更好地理解和应用这些方法。通过合理的特征工程,可以显著提升模型的性能和预测能力。
992 3
数据准备指南:10种基础特征工程方法的实战教程
|
Web App开发 前端开发 JavaScript
WebKit 入门介绍
WebKit 入门介绍
|
搜索推荐 API 开发者
京东商品详情优惠券API接口全攻略
京东商品详情优惠券API接口为电商开发者和商家提供了精准查询、获取详细信息及实时监测优惠券状态的功能。通过商品ID,可筛选出特定商品的定向或店铺通用优惠券,获取面额、使用门槛、领取条件等详尽信息,并监测优惠券的领取情况。该接口支持多种筛选参数,满足个性化需求,助力电商业务拓展与创新。示例代码展示了如何使用Python调用此接口,实现优惠券信息的高效获取。
995 23
|
存储
Obsidian 与 Typora 图片兼容保存路径一致设置
Obsidian 与 Typora 图片兼容保存路径一致设置
1543 0
|
数据采集 算法
sku算法实现
sku算法实现
774 0
sku算法实现
|
SQL 缓存 DataWorks
DataWorks产品使用合集之实时同步任务的配置和执行该如何实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。

热门文章

最新文章