跳到主要内容

维护者峰会 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 内部机制交互,这些机制在 vanilla(未修改的)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(尽管名称如此,但它是 Electron 特有的代码,与 Chromium Views 无关)。通过暴露 WebContentsView,我们将拥有一个可重用的 View 对象,可以显示 Web 内容,从而为使 BrowserWindow 类成为纯 JavaScript 并消除更多代码复杂性打开大门。

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

如果您是正在应用中使用 BrowserView 的 Electron 开发者:别担心,我们没有忘记您!我们计划将现有 BrowserView 类作为 WebContentsView 的 shim,以便在您过渡到新 API 时提供一个缓冲。

参见:electron/electron#35658

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

我们的朋友 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 审查流程和增强的文档是我们正在试验的其他事项。我们希望在不久的将来能分享更多消息!