概述(一)

1.浏览器为什么重要
2.浏览器的组成和内部机制

Javascript 和 ECMAscript 通常都被人们用来表达相同的含义,但 Javascript 的含义却比 ECMA-262 中规定的要多得多。一个完整的 JavaScripts 实现应该由下列三个不同的部分组成:
1.核心(ECMAScript):由ECMA-262定义并提供核心语言功能。
2.文档对象模型(DOM):提供访问和操作网页内容的方法和接口。
3.浏览器对象文档模型(BOM):提供与浏览器交互的方法和接口。

ECMAScript
http://www.ecma-international.org/ecma-262/11.0/index.html#sec-intro(英文)
中文

DOM/ BOM
https://www.w3.org/standards/
HTML
DOM

1.ECMAScript
ECMA-262 定义的 ECMAScript 与浏览器没有依赖关系。ECMA-262 定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。我们常见的 Web 浏览器只是 ECMAScript 实现可能的宿主环境之一。宿主环境不仅提供基本的 ECMAScript 实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如 DOM,则利用ECMAScript 的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括 Node。

大致来说,它规定了这门语言的下列组成部分:
语法
类型
语句
关键字
保留字
操作符
全局对象

2.DOM
文档对象模型(DOM)是针对 XML 但经过扩展用于 HTML的应用程序编程接口(API)。DOM 把整个页面映射为一个多层节点结构。HTML 或 XML 页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
在 Internet Explorer4 和 Navigator4 分别支持的不同形式的DHTML 基础上,开发人员首次无需重新加载网页,就可以修改其外观和内容了。由于 Netscape 和 微软 在开发 DHTML 方面各持已见,浏览器越来越互不兼容,负责制定 Web通信标准的 W3C 开始着手规划DOM。

DOM主要包含的内容:
1.HTML 和 XML 文档的底层结构
2.获取 DOM 结构的方法(Element Api、Selectors Api)
3.命名空间——Element Traversal(XML)
4.DOM事件

3.BOM
Internet Explorer和Netscape Navigator3有一个共同的特色,那就是支持可以访问和操作浏览器窗口的浏览器对象模型(BOM)。开发人员使用BOM可以控制浏览器显示的页面以外的部分。而BOM真正与众不同的地方,还是它作为JavaScript实现的一部分却没有相关的标准。这个问题在HTML5中得到了解决,HTML5致力于把很多BOM功能写入规范。

BOM主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的扩展都归在BOM的范畴内。比如,下面就是这样一些扩展:

弹出新浏览器窗口的能力;
移动、缩放和关闭浏览器窗口的能力;
navigator对象,提供关于浏览器的详尽信息;
location对象,提供浏览器加载页面的详尽信息;
screen对象,提供关于用户屏幕分辨率的详尽信息;
performance对象,提供浏览器内存占用,导航行为和时间统计的详尽信息;
对cookie的支持;
其他自定义对象,如XMLHttpRequest和IE的ActiveXObjec。

浏览器
http://www.chromium.org/developers
http://www.chromium.org/developers/design-documents/multi-process-architecture
https://docs.google.com/document/d/1aitSOucL0VHZa9Z2vbRJSyAIsAz24kX8LFByQ5xQnUg/edit#
https://developers.google.cn/web/updates/capabilities(浏览器)
https://developers.google.cn/web/resources/contributors
https://chromium.googlesource.com/chromium/src/+/master/docs/threading_and_tasks.md#Core-Concepts
https://v8.dev/
https://mathiasbynens.be/notes/shapes-ics

Chrome浏览器在较高性能的设备上运行时,它会将每个服务分配至不同的进程,以此来获得更强的运行是稳定性和健壮性;反之,如果Chrome运行在一台资源受限的设备上时,Chrome会将服务整合在一个进程中,以此来节省内存的占用。
在这里插入图片描述
浏览器包含:
1.浏览器进程:负责浏览器的功能,包括导航栏、书签、后退、前进按钮。当然也负责一些虽然看不到但也很重要的部分,比如网络请求和文件访问。
2.渲染进程:窗口内的网站将如何呈现
3.插件进程:控制着网站可能用到的所有插件,比如flash
4.GPU进程:处理GPU任务,与其他进程隔离。它被划分为不同的进程因为GPU会处理来自多个应用程序的请求并将其绘制在同一个平面上。
5.扩展进程
6.工具进程
…等等

从客户端——服务端来理解浏览器
服务端:浏览器进程、服务进程(插件、GPU等)
客户端:渲染进程
http:Mojo (之前通过IPC通信)

在这里插入图片描述

浏览器进程
所有处于窗口之外的部分都由同一个浏览器进程掌管。浏览器的进程又同时拥有许多线程,掌管浏览器的不同部分:
UI线程用来绘制顶部的操作按钮和输入框
网络线程负责处理并接收来自互联网的数据
存储线程控制着访问本地文件的权限

渲染进程
1.GUI渲染引擎(HTML解释器,CSS解释器)
2.JS引擎
渲染引擎的职责就是渲染,即在浏览器窗口中显示所请求的内容。默认情况下,渲染引擎可以显示html、xml文档及图片,它也可以借助插件显示其他类型数据,例如使用PDF阅读器插件,可以显示PDF格式。
JS引擎:解析和执行JavaScript来实现网页的动态效果。

浏览器内核
主要分成两部分:渲染引擎和JS引擎
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
IE::Trident Chakra
Firefox:Gecko SpiderMonkey
Safari:Webkit JavaScriptCore
Google:Blink V8
Opera:Presto (现在和Google一起研发Blink)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值