跳转到主要内容

2022 年维护者峰会回顾

·阅读时长 5 分钟

上个月,Electron 的维护者团队在加拿大温哥华会面,讨论了项目在 2023 年及以后的发展方向。在会议室里,核心维护者和受邀的合作者们用了四天时间,讨论了新倡议、维护难点以及项目的整体健康状况。

合影!由 @groundwater 拍摄。

未来,团队将继续全力以赴,发布稳定且及时的 Chromium 升级,修复 bug,并让 Electron 对所有用户来说更安全、性能更好。我们还有一些令人兴奋的项目正在进行中,我们很乐意与社区分享!

革命性的新 API

Electron 项目中需要达成共识的主要 API 提案,会通过“征求意见”(RFC)流程,由我们的 API 工作组的成员进行审查。

今年,我们推动了两项可能为 Electron 应用解锁新维度能力的重大提案。这些提案仍是高度实验性的,但以下是我们对即将到来的内容的抢先预览!

新的原生插件增强(C API)

此提案概述了一个新的 Electron C API 层,它将允许应用开发者编写自己的原生 Node 插件,与 Electron 的内部资源进行交互,类似于 Node 自带的 Node-API。有关提议的新 API 的更多信息 可以在这里找到

示例:利用 Chromium 资源为应用增添动力

许多 Electron 应用维护着自己的分叉(fork),以直接访问 vanilla(未修改)Electron 无法访问的 Chromium 内部。通过在 C API 层公开这些资源,这些代码可以作为原生模块与 Electron 一起存在,从而可能减轻应用开发者的维护负担。

公开 Chromium 的 UI 层(Views API)

在幕后,Chrome 用户界面(UI)中非网站部分,例如工具栏、标签页或按钮,都是通过一个名为 Views 的框架构建的。Views API 提案将这个框架的一部分作为 Electron 中的 JavaScript 类引入,最终目标是允许开发者为他们的 Electron 应用程序创建非 Web UI 元素。这将使应用程序无需 hack 地组合 Web 内容。

使这套新 API 成熟的基础工作正在进行中。以下是我们可以在不久的将来看到的一些首批成果。

示例:使用 WebContentsView 重构窗口模型

我们计划进行的第一个更改是将在 Chrome 的 WebContentsView 公开给 Electron 的 API 表面,这将是我们现有 BrowserView API 的后继者(尽管名称如此,BrowserView 是 Electron 特有的代码,与 Chromium Views 无关)。通过公开 WebContentsView,我们将拥有一个可重用的 View 对象,可以显示 Web 内容,从而使 BrowserWindow 类成为纯 JavaScript,并消除更多的代码复杂性。

虽然这个更改没有为应用开发者提供太多新功能,但它是一个大型重构,消除了大量的底层代码,简化了 Chromium 升级,并降低了主要版本之间出现新 bug 的风险。

如果您是 Electron 应用开发者,并且正在使用 BrowserViews:请放心,我们没有忘记您!我们计划将现有的 BrowserView 类变成 WebContentsView 的一个包装器,为您向较新的 API 过渡提供缓冲。

参见:electron/electron#35658

示例:使用 ScrollView 实现可滚动 Web 内容

我们在 Stack 的朋友一直在推动一项倡议,将 Chromium ScrollView 组件公开给 Electron 的 API。有了这个新 API,任何子 View 组件都可以实现水平或垂直滚动。

虽然这个新 API 只实现了单一的小功能,但团队的最终目标是构建一套工具性的 View 组件,可以作为工具包来构建更复杂的非 HTML 界面。

如何参与

您是对这两个 API 提案感兴趣的 Electron 应用开发者吗?虽然我们还没有准备好接收额外的 RFC,但请继续关注未来更多详情!

Electron Forge v6 稳定版发布

自框架诞生以来,Electron 的构建工具生态系统在很大程度上是由社区驱动的,并由许多小型单一用途的包组成(例如 electron-winstaller、electron-packager、electron-notarize、electron-osx-sign)。虽然这些工具效果很好,但用户要拼凑一个有效的构建流水线仍然令人望而生畏。

为了帮助为 Electron 开发者构建更友好的体验,我们构建了 Electron Forge,这是一个一体化解决方案,将所有现有工具整合到一个统一的界面中。尽管 Forge 自 2017 年开始开发,但在过去几年中项目一直处于停滞状态。然而,考虑到社区对 Electron 构建工具状态的反馈,我们一直在努力发布下一代稳定版 Forge。

Electron Forge 6 提供了对 TypeScript 和 Webpack 的一流支持,以及一个可扩展的 API,允许开发者创建自己的插件和安装程序。

敬请期待:即将发布公告

如果您有兴趣使用 Forge 构建项目,或者使用 Forge 的可扩展第三方 API 构建模板或插件,请在本月晚些时候关注我们关于 Forge v6 稳定版发布的官方公告!

下一步是什么?

除上述内容外,团队还一直在思考一系列探索性项目,以改善 Electron 对应用开发者和最终用户的体验。更新器工具、API 审查流程和增强的文档是我们正在试验的其他事项。我们希望在不久的将来有更多消息分享!