0x0001 无意中发现的一个蛮有意思的网站,类似一本在线更新的书籍。 通过高级语言的视角帮助我们理清现代 Web 浏览器的构造,可以帮助建立大体的思维模型,然后进一步去深入各浏览器的核心源码。 主页:https://browser.engineering/ 博客:https://browser.engineering/blog/ 相关的引用资料:https://browser.engineering/bibliography.html 使用这本书的课程(目前主要是 Pavel Panchekha 自己的本科生课程):https://browser.engineering/classes.html GitHub: https://github.com/browserengineering/book 作者: Pavel Panchekha: 犹他大学助理教授,研究领域在 Web 浏览器,主要关注网页布局相关的算法 Chris Harrelson: Chromium 渲染引擎工程师 Hacker News 上的讨论: Web Browser Engineering | Hacker News
BA3000 感谢分享,我之前也找到个类似的: https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html 只不过作者用的语言是Rust
0x0001 ccjs 没特定要求,但感觉它基本是围绕着 HTML / CSS / JavaScript 如何表达网页进行的,结合一定的数据结构、编译、计算机网络和操作系统知识。 所以从这个角度来看可能可以从两方面入手: 一方面是熟悉浏览器下三剑客的语境(参考 MDN Web入门的前两节; 一方面是对编译、网络和操作系统进程线程之类的有个比较基本的认识(做的时候遇到瓶颈可以再进一步回顾和深挖)
0x0001 Chromium 有一个分享 Life of a Pixel,也详细展开了这个渲染的过程。 对应文档: https://www.chromium.org/developers/design-documents/#start-here-background-reading