热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浏览器内核、JS引擎、页面显现道理及其优化

浏览器内核又叫衬着引擎,重要担任HTML、CSS的剖析,页面规划、衬着与复合层合成。浏览器内核的差别带来的重要问题是对CSS的支撑度与属性表现差别。webkitWekbit是一个开

浏览器内核又叫衬着引擎,重要担任 HTML、CSS 的剖析,页面规划、衬着与复合层合成。浏览器内核的差别带来的重要问题是对 CSS 的支撑度与属性表现差别。

webkit

Wekbit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari, Google的Chrome, Nokia S60平台的默许浏览器,Apple手机的默许浏览器,Android手机的默许浏览器均采纳的Webkit作为器浏览器内核

Blink

Blink是在Wekbit的基础上的革新,是现在对新特征支撑度最好的内核

Gecko

Firefox

Trident

微软的IE,IE4+ 的内核,一向延续到 IE11,EdgeHTML 是微软扬弃 IE 后开辟的全新内核

webkit构成

  • webkit 包括了很多差别平台对webkit封装的完成,即笼统出了与浏览器所能直接对应的一些观点的完成。如,WebView, WebPage, WebFrame等
  • WebCore 完成了对文档的模子化,包括了CSS,DOM,Render等的完成
  • Javascript Core 对Javascript支撑的完成

浏览器内核与 JS 引擎一览

《浏览器内核、JS 引擎、页面显现道理及其优化》

Javascript 引擎

Javascript 担任 Javascript 代码的诠释与实行,主流的 Javascript 引擎有:V8、SpiderMonkey、JavascriptCore、Chakra。

页面显现道理

一个页面的显现,大略的说会经由以下这些步骤:

1. DOM 树的构建(Parse HTML)
2. 构建 CSSOM 树(Recaculate Style) 为何是 Re-caculate Style 呢?这是由于浏览器自身有 User Agent StyleSheet,所以终究的款式是我们的款式代码款式与用户代办默许款式掩盖/从新盘算获得的。
3. 兼并 DOM 树与 CSSOM 树为 Render 树
4. 规划(Layout)
5. 绘制(Paint)
6. 复合图层化(Composite)图层化是本身明白后抽象的意译个中规划(Layout)环节重要担任各元素尺寸、位置的盘算,绘制(Paint)环节则是绘制页面像素信息,合成(Composite)环节是多个复合层的合成,终究合成的页面被用户看到。

  • 当碰到 Javascript 剧本或许外部 Javascript 代码时,浏览器便住手 DOM 的构建(壅塞 1)

那是不是停下 DOM 的构建的同时,立马就实行 Javascript 代码或许下载外部剧本实行,实在照样要视情况而定,见2

  • 当碰到 标签须要实行剧本代码时,浏览器会搜检是不是这个 标签以上的 CSS 文件是不是已加载并用于构建了 CSSOM,假如 上部另有 CSS 款式没加载,则浏览器会守候 上方款式的加载完成才会实行该 内的剧本(壅塞 2)
  • DOM 树与 CSSOM 树的胜利构建是背面步骤的基础(同步壅塞)
  • 同时外部剧本、外部款式表的下载也是消耗时候较多的点

CSS剖析器

Javascript 担任 Javascript 代码的诠释与实行,主流的 Javascript 引擎有:V8、SpiderMonkey、JavascriptCore、Chakra。

页面显现道理

CSS范例定义了css的词法及语法文法。

这个构造鄙人面的定义中正式的定义了:

ruleset
: selector [ ',' S* selector ]*
'{' S* declaration [ ';' S* declaration ]* '}' S*
;

这说明,一个划定规矩鸠合具有一个或是可选个数的多个选择器,这些选择器以逗号和空格(S示意空格)举行分开。每一个划定规矩鸠合包括大括号及大括号中的一条或多条以分号离隔的声明。声明和选择器在背面举行定义。

Webkit CSS剖析器(Webkit CSS parser)

Webkit运用Flex和Bison剖析天生器从CSS语法文件中自动天生剖析器。回想一下剖析器的引见,Bison建立一个自底向上的剖析器,Firefox运用自顶向下剖析器。它们都是将每一个css文件剖析为款式表对象,每一个对象包括css划定规矩,css划定规矩对象包括选择器和声明对象,以及其他一些相符css语法的对象。


推荐阅读
author-avatar
php小学生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有