跳到主要内容

Electron 30.0.0

·阅读时长 4 分钟

Electron 30.0.0 已发布!它包含对 Chromium 124.0.6367.49、V8 12.4 和 Node.js 20.11.1 的升级。


Electron 团队很高兴宣布 Electron 30.0.0 发布!您可以通过 npm 使用 npm install electron@latest 进行安装,或从我们的版本发布网站下载。继续阅读了解此版本的详细信息。

如果您有任何反馈,请在 TwitterMastodon 上与我们分享,或加入我们的社区 Discord!错误和功能请求可以在 Electron 的议题跟踪器中报告。

重要变更

亮点

  • Windows 现在支持 ASAR Integrity fuse(#40504
    • 如果配置不正确,已启用 ASAR Integrity 的现有应用可能无法在 Windows 上运行。使用 Electron 打包工具的应用应升级到 @electron/packager@18.3.1@electron/forge@7.4.0
    • 查看我们的 ASAR Integrity 教程 以了解更多信息。
  • 添加了 WebContentsViewBaseWindow 主进程模块,废弃并替换了 BrowserView (#35658)。在这篇博客文章中了解如何从 BrowserView 迁移到 WebContentsView
    • BrowserView 现在是 WebContentsView 的一个垫片,旧的实现已被移除。
    • 请参阅我们的 Web Embeds 文档,了解新的 WebContentsView API 与其他类似 API 的比较。
  • 实现了对 File System API 的支持 (#41827)

技术栈变更

Electron 30 将 Chromium 从 122.0.6261.39 升级到 124.0.6367.49,Node 从 20.9.0 升级到 20.11.1,V8 从 12.2 升级到 12.4

新特性

  • 为 webview 添加了 transparent webpreference。(#40301
  • 在 webContents API 上添加了新的实例属性 navigationHistory,以及 navigationHistory.getEntryAtIndex 方法,使应用程序能够检索浏览历史中任何导航条目的 URL 和标题。(#41662
  • 添加了新的 BrowserWindow.isOccluded() 方法,允许应用程序检查遮挡状态。(#38982
  • 添加了对从 utility process 使用 net 模块发出的请求进行代理配置的支持。(#41417
  • 添加了对在 navigator.serial 中通过服务类别 ID 请求蓝牙端口的支持。(#41734
  • 添加了对 Node.js NODE_EXTRA_CA_CERTS CLI 标志的支持。(#41822

重大变更

行为变更:跨域 iframe 现在使用权限策略访问功能

跨域 iframe 现在必须通过 allow 属性指定对给定 iframe 可用的功能,才能访问它们。

参阅文档了解更多信息。

移除:--disable-color-correct-rendering 命令行开关

虽然此开关从未正式记录过,但在此仍指出其已移除。Chromium 本身现在对颜色空间有了更好的支持,因此不再需要此标志。

行为变更:BrowserView.setAutoResize 在 macOS 上的行为

在 Electron 30 中,BrowserView 现在是新的 WebContentsView API 的一个包装器。

此前,BrowserView API 的 setAutoResize 功能在 macOS 上由 autoresizing 支持,而在 Windows 和 Linux 上则由自定义算法支持。对于将 BrowserView 填充整个窗口等简单用例,这两种方法的行为是相同的。然而,在更高级的用例中,BrowserView 在 macOS 上的 autoresizing 行为与在其他平台上不同,因为 Windows 和 Linux 的自定义调整大小算法与 macOS 的 autoresizing API 的行为并非完全匹配。现在,autoresizing 行为已在所有平台上标准化。

如果你的应用程序使用 BrowserView.setAutoResize 进行除将 BrowserView 填充整个窗口之外的更复杂操作,则可能你已经有了自定义逻辑来处理 macOS 上这种行为差异。如果是这样,在 Electron 30 中将不再需要该逻辑,因为 autoresizing 行为是一致的。

移除:WebContents 上 context-menu 事件的 params.inputFormType 属性

WebContents 中 context-menu 事件的 params 对象的 inputFormType 属性已被移除。请改用新的 formControlType 属性。

移除:process.getIOCounters()

Chromium 已移除对该信息的访问。

终止对 27.x.y 的支持

根据项目的支持政策,Electron 27.x.y 已达到支持终止日期。鼓励开发者和应用升级到更新版本的 Electron。

E30 (24 年 4 月)E31 (24 年 6 月)E32 (24 年 8 月)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

下一步计划

短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。

您可以在此处找到 Electron 的公共时间线

有关未来变更的更多信息,请参见计划中的重大变更页面。