webkit 学习笔记 - 1. 浏览器与浏览器内核
浏览器
chrominum
- Chrominum 本身就是一个浏览器,而不是Chrome浏览器的内核,Chrome浏览器一般选择Chrominum的稳定版本作为它的基础
格局
- 对于桌面系统而言,IE、Firefox、Chrome占据了市场90%的浏览器份额。而在移动端,由于苹果的IOS系统和谷歌的Android系统占据了绝对领先的地位,因而基本上移动端的浏览器都是基于Webkit
HTML
- HTML1.0由著名的Berners-Lee于1991年提出,此后经历了多次版本更新,直到1997年4.0版本和1999年的4.01版本。
- 具有划时代意义的HTML5技术在2012年由W3C和WHATWG推荐为候选规范。HTML5包含了一系列标准,一共包含10个大的分类
浏览器用户代理(User-agent)
- 用户代理主要用来表明浏览器的身份。因为某种浏览器的流行,很多站点会根据这种浏览器来定制特定内容,当其他浏览器也需要相同的网页时,就只能通过在User-agent里添加上此种浏览器的信息来冒充此种浏览器
浏览器内核及其特性
- 浏览器内核通常也被称为渲染引擎,渲染引擎能够将HTML/CSS/JS文本及其相应的资源转换成图像结果
- 目前,主要浏览器内核包括Trident(IE),Gecko(Firefox),Webkit。2013年,Google宣布了Blink内核,它其实是从Webkit复制出去的
内核特征
- 渲染引擎主要包括四个模块
HTML 解释器
CSS 解释器
布局
Javascript 引擎
- 一般来说,渲染引擎会内置一个默认的Javascript引擎,不过大多数浏览器会将其替换,所以严格来说,Javascript引擎并不属于内核的一部分。Javascript引擎能够解释Javascript代码并通过DOM接口和CSSOM接口来修改网页的内容和样式
- 以上这些模块依赖很多系统内置的模块,包括网络、存储、2D/3D图像、音视视频和图形解码器等。如此说来,实际上,渲染引擎应该还包括如何使用这些依赖模块的部分
- 当DOM建立的时候,渲染引擎接收来自CSS解释器的信息,构建一个新的内部绘图模型。该模型由布局模块计算模型内各个元素的位置和大小信息,最后调用绘图模块完成网页的绘制
Webkit
- 2001年,苹果宣布从KHTML的源代码树中复制代码出来,成立了一个新的项目,这就时大名鼎鼎的Webkit。苹果公司在2005年将Webkit项目开源
- “Webkit”这个单词其实可以表示成两种含义,姑且称之为广义Webkit和狭义Webkit。广义Webkit指的是整个Webkit项目,狭义Webkit指的是Webcore(包含HTML解释器,CSS解释器,布局模块)和Javascript引擎之上的一层绑定和嵌入式编程接口,可以被各种浏览器调用
- Webkit被很很多浏览器所实现,每个移植的HTML5规范支持不尽相同,所以,尽管都是使用Webkit,但还是可能对兼容性带来很大的挑战
webkit 和 webkit2
- Webkit2也是一个狭义上的绑定和接口层,但是Webkit2不是Webkit绑定和接口层的简单升级,而是一组支持新架构(多进程)的全新绑定和接口层
- 20104月,苹果宣布了Webkit2,目标就是抽象出一组新的编程接口,该接口和调用者代码与网页的渲染工作代码不在同一个进程,这显然有了Chrominum多进程的优点。而且,Webkit接口的使用者不需要理解和接触背后的多进程和进程间通信等复杂机制,Webkit2部分代码也属于Webkit项目。Webkit2进程结构模型至少包含两个进程,其一时UI进程(绑定和接口层所在的进程,也就是浏览器的UI进程),其二时Web进程(网页渲染所在的进程)。下面时Webkit2和Chrominum的进程模型图
- 通过API boundary可以看出来,基于Chrominum项目框架来开发一个浏览器,开发者需要自己处理多进程和多进程之间的通信,而使用Webkit2架构则不需要
Blink
- Blink时Chrominum浏览器的内核,最初时用从Webkit项目复制过来的
- Blink有一个大胆的想法,想要将DOM树引入Javascript引擎中(目前应该还未实现)。目前DOM树和Javascript引擎是分开的,在DOM树与Javascript引擎中间有一个桥阶层,这意味着Javascript引擎访问DOM树需要较高的代价
转自 webkit学习笔记-(1)浏览器和浏览器内核
webkit 学习笔记 - 1. 浏览器与浏览器内核相关推荐
- CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法
CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法 参考文章: (1)CSS学习笔记--浮动元素由于浏览器页面缩小而被挤到下面的解决方法 (2)https://www.cnblogs. ...
- JavaScript学习笔记(O)——浏览器内核介绍
术语解释 浏览器最重要或者说核心的部分是"Rendering Engine",可大概译为"解释引擎",不过我们一般习惯将之称为"浏览器内核" ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 重学前端学习笔记(十三)--浏览器工作解析(三)
笔记说明 重学前端是程劭非(winter)[前手机淘宝前端负责人]在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专 ...
- Android(java)学习笔记144:网络图片浏览器的实现(ANR)
1.我们在Android下,实现使用http协议进行网络通信,请求网络数据.这里是获取网络上的图片信息,让它可以显示在手机上: 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个 ...
- 区块链学习笔记:区块链浏览器
一.什么是区块链浏览器 浏览器对于人们来说真是熟悉的不能再熟悉,每每我们需要上网寻找知识,搜集资料都会用到浏览器,我们天天都可能会用到浏览器,使用的频率也十分频繁,所以我们对浏览器很熟悉,它是用来浏览 ...
- Python学习笔记(一)——浏览器自动化测试工具Selenium
看了网友用Python通过影评来分析电影是好片还是烂片,自己也有了个想法想去分析下百度贴吧的帖子是精品帖子还是水帖子.目前正在熟悉工具的使用. 会用到的库:Selenium, pandas(数据模型) ...
- QT webkit学习笔记(2)
五.QWebDataBase Class介绍 QWebDataBase提供了对基于JavaScript创建的HTML 5数据库.新一代的HTML 5标准也提供对基于javaScript SQL数据库访 ...
- linux内核学习笔记【一】临时内核页表 Provisional kernel Page Tables
最近开始学习linux内核,看了<深入理解linux内核>,开始写点学习收获.内核版本为2.6.11 临时全局目录(provisional page global directory)是在 ...
- 【操作系统】Oranges学习笔记(四) 第五章 内核雏形
文章目录 5.1 在Linux下用汇编写HelloWord 5.2 再进一步,汇编和C同步使用 5.3 ELF(Executable and Linkable Format) 1. ELF Heade ...
最新文章
- Day 33 并发编程3
- 使用CSS制作圆角效果
- 看懂 ,学会 .NET 事件的正确姿势
- Net设计模式实例之享元模式( Flyweight Pattern)
- 关于bcg库记忆界面的问题及其解决办法
- IIS服务器下做301永久重定向设置方法[图解]
- html编译器nvu,开源的网页编辑器Nvu
- 【电子信息复试】考研复试常考问题——数据库
- Controlling Execution
- php表格tr,jQuery+ajax实现动态添加表格tr td功能示例
- ta leader是什么岗位_干货 丨 八卦下,应届/实习生应该跟什么样的leader?
- MySql中的内外联结查询
- continue 的理解
- 一筐鸡蛋筐拿鸡蛋的问题
- linux 内存优化
- Netspark自动批量扫描powershell脚本
- 2017年CSTQB/ISTQB认证考试时间表
- 【产品经理】产品经理进阶之路-大纲
- php wamp一键环境包,phpwind本地环境一键安装包Wamp 5.0使用说明
- CANopen协议及应用