跳至主要内容

2022 年维护者峰会回顾

·阅读时间:5 分钟

上个月,Electron 的维护者团队在加拿大温哥华会面,讨论了该项目 2023 年及以后的发展方向。在为期四天的会议室里,核心维护者和受邀合作者讨论了新的举措、维护痛点以及项目的总体健康状况。

团队合影!由 @groundwater 拍摄。

展望未来,团队仍将全力致力于发布定期且快速的 Chromium 升级、修复错误,并使 Electron 对于每个人来说都更加安全和高效。我们还有一些令人兴奋的项目正在进行中,我们很乐意与社区分享!

变革性的新 API

Electron 项目中需要达成共识的主要 API 提案都将经过“意见征集”(RFC)流程,该流程由 API 工作组成员进行审查。

今年,我们推动了两个主要的提案,这些提案有可能为 Electron 应用开启新的功能维度。这些提案处于高度实验阶段,但以下是您可以期待的内容!

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

此提案概述了一层新的 Electron C API,它将允许应用开发者编写自己的原生 Node 插件,这些插件与 Electron 的内部资源交互,类似于 Node 自身的 Node-API。有关提议的新 API 的更多信息,请点击此处

示例:利用 Chromium 资源增强应用

许多 Electron 应用维护着自己的分支,以便直接与 Chromium 内部组件交互,而这些组件在使用普通(未修改的)Electron 时是无法访问的。通过在 C API 层中公开这些资源,此代码可以作为原生模块与 Electron 一起存在,从而有可能减少应用开发者的维护负担。

公开 Chromium 的 UI 层(Views API)

在幕后,Chrome 用户界面(UI)的非网站部分(如工具栏、选项卡或按钮)是使用名为 Views 的框架构建的。Views API 提案将此框架的部分内容作为 JavaScript 类引入 Electron,最终目标是允许开发者为其 Electron 应用创建非 Web UI 元素。这将防止应用不得不将 Web 内容拼凑在一起。

为使这套新的 API 成为可能,目前正在进行基础工作。以下是一些您在不久的将来可以期待的第一件事。

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

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

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

如果您是 Electron 开发者,并在您的应用中使用 BrowserViews:请放心,我们没有忘记您!我们计划使现有的 BrowserView 类成为 WebContentsView 的垫片,以便在您过渡到较新的 API 时提供缓冲。

请参阅:electron/electron#35658

示例:使用 ScrollView 滚动 Web 内容

我们在 Stack 的朋友一直在推动一项计划,将 Chromium ScrollView 组件公开到 Electron 的 API。使用此新 API,任何子 View 组件都可以水平或垂直滚动。

尽管此新 API 满足了一个较小的单一功能,但团队的最终目标是构建一组实用程序 View 组件,这些组件可用作构建更复杂的非 HTML 界面的工具包。

参与其中

您是 Electron 应用开发者,并且对上述任何一个 API 提案感兴趣吗?虽然我们还没有准备好接收额外的 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 审查流程和增强文档等方面的内容。我们希望在不久的将来分享更多消息!