跳转到主要内容

Electron 30.0.0

·阅读时长 5 分钟

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


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

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

重要变更

亮点

  • ASAR 完整性保险丝现在在 Windows 上受支持 (#40504)
    • 如果配置不正确,现有已启用 ASAR 完整性的应用程序可能无法在 Windows 上运行。使用 Electron 打包工具的应用程序应升级到 @electron/packager@18.3.1@electron/forge@7.4.0
    • 请查看我们的ASAR 完整性教程以获取更多信息。
  • 添加了主进程模块 WebContentsViewBaseWindow,同时弃用并替换了 BrowserView (#35658)。请参阅 这篇博文 了解如何从 BrowserView 迁移到 WebContentsView
    • BrowserView 现在是 WebContentsView 的一个垫片,旧的实现已被移除。
    • 请参阅我们的 Web 嵌入文档,了解新的 WebContentsView API 与其他类似 API 的比较。
  • 实现了对 文件系统 API 的支持 (#41822)

技术栈变更

  • Chromium 124.0.6367.49
    • Chrome 124 新增功能,以及 DevTools 124 新增功能
    • Chrome 123 新增功能,以及 DevTools 123 新增功能
  • Node 20.11.1
  • V8 12.4

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 进程发出的 net 模块请求添加了代理配置支持。(#41417)
  • navigator.serial 中添加了对按服务类 ID 请求蓝牙端口的支持。(#41734)
  • 添加了对 Node.js NODE_EXTRA_CA_CERTS CLI 标志的支持。( #41822)

破坏性变更

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

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

更多信息请参阅文档

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

这个开关从未被正式记录,但在此仍会注明其移除。Chromium 本身现在对颜色空间有更好的支持,所以应该不再需要这个标志。

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

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

之前,macOS 上的 BrowserView API 的 setAutoResize 函数是基于 autoresizing 实现的,而在 Windows 和 Linux 上则使用自定义算法。对于使 BrowserView 充满整个窗口等简单用例,这两种方法的行为是相同的。但是,在更复杂的场景下,BrowserView 在 macOS 上的 autoresize 方式与其他平台不同,因为 Windows 和 Linux 的自定义调整大小算法并未完全匹配 macOS 的 autoresizing API 的行为。现在,所有平台的 autoresize 行为已统一。

如果您的应用程序使用 BrowserView.setAutoResize 来执行比让 BrowserView 充满整个窗口更复杂的操作,那么您可能已经实现了自定义逻辑来处理 macOS 上的这种行为差异。如果是这样,在 Electron 30 中,由于 autoresize 行为已一致,这些自定义逻辑将不再需要。

已移除:WebContentscontext-menuparams.inputFormType 属性

WebContentscontext-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 的公开时间线

有关未来变更的更多信息,请参阅计划中的破坏性变更页面。