Firefox UI 已迁移至使用 Web Components 构建

这不是一项一蹴而就的工程,Mozilla 开发者表示团队花费了大约两年的时间,采用“增量更新”的方式才逐渐将 Firefox UI 迁移至使用 Web Components 构建。

Mozilla 开发者 Brian Grinstead 在博客 宣布 ,经过多年的努力,他已在几个星期前从 Firefox UI 中 移除了 XBL ,亦即意味着将 Firefox UI 迁移至使用 Web Components 构建的工程已完成。

XBL 是一种基于 XML 的语言,当我们要实现附加到 DOM 元素的“绑定”就需要使用 XBL。然后,我们还可以将自定义 JS 属性和匿名内容添加到常规元素。XBL 是在90年代末期为 NetScape 设计和构建的,除了 XBL,还有许多其他的“XUL”特性可帮助我们构建桌面 Web 应用 —— 比 Web 平台提供相似的功能早得多。

Firefox 大约有 300 个 XBL 绑定 和  50000 行相关代码 ,主要都是被比较小型的部件使用(如 <toolbarbutton label="Reload" /> ),以及用于管理应用程序(如 <tabbrowser /> ,它通过管理标签在浏览器窗口中控制大部分状态,以及从内容页面接收消息等)。

我们可以将 Firefox UI 看作是一个非常大型的单页应用程序,最初采用 DOM 和 JS 构建,相对于 20 多年前的原生应用,它的技术选型十分大胆。也正因为 Mozilla 走得太超前 ,所以在 Web 平台尚未支持它们之前就自己实现了构建复杂 Web 应用所需的部分特性。这些特性在日后也逐渐 演变 成像 CSS flexbox 和 Web Components 这样的标准规范。

处于这种新老交替的时刻,让现有代码库继续使用原版本,并要求平台同时支持两者当然是最容易的,毕竟对旧代码进行重写十分困难而且成本巨大。

然而即便如此,Mozilla 还是选择在 Firefox 中实现 Web Components,他们启动了一个“并行”项目,在该项目中,团队将迁移现有的 UI 组件以使用它们。他们以“增量更新”的方式进行此操作,以便在保证 Firefox 正常运行的同时进行每个独立的更改,而不是从头开始创建一个分支来重写 UI。

Brian 认为这是一项重大的成就,也给 Firefox 的底层提供了改进,还允许团队可以将精力集中在现代 Web 标准上,并移除没有对外公开的大量重复和复杂的功能。

至于为什么要使用 Web Components,Brian 表示由于 XBL 存在的问题,多年来团队一直在讨论移除 XBL。但这项工程似乎十分庞大,并且看起来好像需要从头开始重写 Firefox UI,所以一直没能有效推动项目的进展。后来团队进行了“ 设计审查 ”,并提议启动“并行项目”计划,以实现采用“增量更新”的方式实现迁移的目标。由于两者的模型非常相似,因此开发者在迁移元素时能做出合理的选择,以尽可能保持 API 的兼容性。

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章