【极客时间】浏览器工作原理与实践-0 工程师视角下的浏览器是怎样的

极客时间-浏览器工作原理与实践

https://time.geekbang.org/column/intro/100033601?tab=intro

0 工程师视角下的浏览器是怎样的

什么是浏览器

可以将浏览器理解为一个软件。

基于标准实现的软件

深入来看,浏览器是基于一套套标准实现的,包括:

  • 页面标准
    • W3C
    • WHATWG
  • 语言标准
    • ECMAScript
    • WebAssembly
  • 网络标准
    • RFC-XXX

引入标准后,与其他软件有了本质区别。
浏览器开发厂商角度:严格按照标准实现浏览器,就可以执行标准的代码。
开发者角度:严格按照标准开发项目,就能实现同一套代码的跨平台应用。
因此,可以说浏览器是基于一套套标准的实现,外壳是浏览器,本质是标准的实现。

浏览器发展过程中,制定和实现了很多标准,但一部分标准没有得到广泛应用,如WebSQL,FileSystem,Application Cache.

WebSQL: 可以让开发者在页面中使用数据库SQL语言
FileSystem:可以让开发者在页面以文件的形式读写数据
Application Cache:可以让开发者将页面内容缓存在本地,如APP一样,实现没有网络的情况依然可以打开页面

以上标准看上去似乎很有用,但出于各种原因,并没有得到开发者认可,这意味着标准制定者和开发者没有达成共识,所以这些标准被放弃了或继续改造成几方都能接受的标准。如Application Cache经过改造,升级为了PWA.

被开发者认可的标准,如WebSocket,被广泛应用,意味着标准制定者和开发者达成了共识。

综上所述,得出如下结论:浏览器背后是标准,标准背后是共识。

因此,只要基于标准,就能开发出跨平台的应用。

特别是最近几年,浏览器所支持的标准越来越多,这些新标准可以满足越来越多的项目需求。

因此在选择项目方案时,前端基本是一个候选项。特别是PC段,浏览器基本上能解决大部分项目需求,无论是音乐、视频还是游戏,基本都能通过浏览器完成。

毫不夸张说,PC端浏览器已经处于绝对统治地位。而且这种地位还在不断加强。

对于移动设备,目前依然是军阀混战局面。本地应用,浏览器以及新框架层出不穷。

李兵认为最终胜出的可能是浏览器,因为1 开放基因,容易实现跨平台;2 浏览器技术不断迭代。

浏览器在升级过程中,使用场景和功能都在不断丰富,开发环境也在进化,各种技术层出不穷,让前端开发停不下学习的脚步。出现这种现象的原因,归结如下:

  • 前端技术大爆炸
  • 浏览器支持业务边界在增加
  • 每种技术都在快速自我迭代更新

如何学习前端呢?

前端技术点多,更新速度快,如何以不变应万变呢(把握住不变的东西,以应付复杂的知识变迁呢)?

开始上升到哲学的高度。

教育就是忘记在学校所学的一切之后所剩下的东西。

李兵认为所剩下的东西:人的思维方式。

成熟的思维方式是建立在立体的知识体系网络之上的。

如何通过浏览器的学习建立前端知识体系网络呢

通过浏览器的学习建立前端知识体系网络。

浏览器5个核心部分
  • 浏览器架构设计
  • JavaScript引擎工作原理
  • 页面工作原理
  • 浏览器网络
  • 浏览器安全
浏览器架构发展史

单进程浏览器
所有的页面和插件都是运行在一个进程里。
其中一个页面的卡顿,崩溃都会影响到其他页面。

现代浏览器
实现了多进程架构,每个页面都是运行在单独的进程里。此时的页面可以看成是一个单独的Web应用。

未来浏览器
会朝着面向服务架构SOA的方向演化。简单来说,除了页面会运行在单独进程中,其他基础服务也会独立出来,运行在单独的进程里,这也是现代操作系统的架构原型。

通过对浏览器架构学习和演化方向,建立对浏览器的宏观认知。

JavaScript引擎工作原理

JavaScript虽然语法与C语言很像,但背后机制完全不一样。
站在浏览器中JavaScript引擎的视角分析其代码的执行流程,那么很多问题如闭包,变量提升,this,词法环境等疑难问题也就迎刃而解了。在此基础上,结合浏览器的事件循环机制,理解回调,微任务,宏任务,Promise等概念也会非常轻松。

页面工作原理

页面是浏览器的核心,浏览器很多功能点都是服务于页面的。
前端工程师所做的一切都是为了最终的页面展示。
要充分理解页面,需把握2点:

  • 事件循环系统

浏览器页面运行在单进程中,要让不同类型的任务在主进程中有条不紊地执行,需要有一个事件循环系统负责接收和调度不同的事件。

上述引用第一句话有歧义,
错误表述:“浏览器页面运行在单进程中” ❌
正确表述:
现代浏览器采用多进程架构(每个标签页独立进程)。
每个渲染进程的 主线程是单线程运行 的,依赖事件循环调度任务。✅
注意:渲染进程中还有其他线程(如合成线程、Worker 线程)并行工作,主线程是单线程工作模式,其他线程不一定需要事件循环。

循环系统是页面的心脏,如果深入理解了Web页面中的事件循环系统,就可以从更高维度理解页面是如何运作的,并加深对页面中异步事件的理解。

  • 构建页面的核心流程

从数据接收到页面显示的整个核心流程,那么页面性能问题就是小菜一碟

浏览器网络

通过浏览器页面数据请求过程,向下理解http,cookie,cache,tcp,dns和管线化等概念,向上可以串联https,http2,http3,WebSocket和页面安全等知识点。

浏览器安全

为什么会谈浏览器安全,因为与浏览器打交道的内容都是通过网络获取的,而浏览器对网络的内容默认态度就是不信任。因此安全十分重要,对可能存在危险的地方要重点防护。不安全的地方有3个:

  • 网络传输过程,数据可能被篡改或窃取
  • 操作系统层面:恶意Web应用可以通过浏览器漏洞攻击操作系统
  • 通过XSS等手段获取页面信息

理解不安全根源,就可以明白沙箱、HTTPS, XSS, CSRF, 同源策略等

以上五部分是前端核心知识,还有其他围绕核心知识展开的零散知识,比如React, Vue, CSS, HTML, WebAssembly, Build Tools, TypeScript, Web移动开发,Web桌面开发。

学习计划:3月学完浏览器工作原理,共46讲+介绍

时间预期完成课程是否完成
2.27入门介绍https://blog.youkuaiyun.com/qq_37581764/article/details/145890276?spm=1001.2014.3001.5501
3.1 六0-2https://editor.youkuaiyun.com/md?articleId=145916346
3.2 日3-5
3.36
3.47
3.5 三8-9
3.6×
3.7×
3.8 六10-13×
3.9 日14-17×
3.10×
3.11×
3.12 三18-19×
3.13×
3.14×
3.15 六20-23×
3.16 日24-27×
3.17×
3.18×
3.19 三28-29×
3.20×
3.21×
3.22 六30-33×
3.23 日34-37×
3.24×
3.25×
3.26 三38-39×
3.27 四×
3.28 五×
3.29 六40-43×
3.30 日44-46×
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值