我是 Blink 布局团队的工程主管 Ian Kilpatrick,Koji Ishii 是我的同事。在加入 Blink 团队之前,我曾是一名前端工程师(在 Google 设立“前端工程师”这一职位之前),负责在 Google 文档、云端硬盘和 Gmail 中构建功能。在该职位上工作了大约五年后,我冒险转到了 Blink 团队,在工作中有效地学习了 C++,并尝试熟悉极其复杂的 Blink 代码库。即使到现在,我也只了解其中的一小部分。 感谢您在此期间耐心等待。 令我感到欣慰的是,许多“正在转型为前端工程师”的工程师都先于我转型为“浏览器工程师”。
我在 Blink 团队任职期间,曾以往的经验给予了我个人指导。 作为一名前端工程师,我经常遇到浏览器不一致、性能问题、渲染 bug 和缺少功能的问题。借助 LayoutNG,我有机会帮助系统地解决 Blink 布局系统中存在的这些问题,它代表了许多工程师多年来的努力成果。
在本文中,我将介绍这样一项重大架构变更如何减少和缓解各种类型的 bug 和性能问题。
布局引擎架构的宏观视图
以前,Blink 的布局树被称为“可变树”。