热门标签 | 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语法的对象。


推荐阅读
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
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社区 版权所有