Electron 35.0.0
Electron 35.0.0 已发布!它包括对 Chromium 134.0.6998.44、V8 13.5 和 Node 22.14.0 的升级。
Electron 团队很高兴地宣布 Electron 35.0.0 的发布!您可以使用 npm 通过 npm install electron@latest 安装它,或从我们的 发布网站 下载它。继续阅读以了解此版本的详细信息。
如果您有任何反馈,请在 Bluesky 或 Mastodon 上与我们分享,或加入我们的社区 Discord!错误和功能请求可以在 Electron 的 问题跟踪器 中报告。
值得注意的变化
服务工作程序预加载脚本,以改善扩展支持
最初在 RFC #8 中由 @samuelmaddock 提出,Electron 35 添加了将预加载脚本附加到 Service Workers 的能力。由于 Chrome 的 Manifest V3 扩展通过 扩展服务工作程序 路由大量工作,此功能填补了 Electron 对现代 Chrome 扩展的支持空白。
在会话级别以编程方式注册预加载脚本时,现在可以使用 ses.registerPreloadScript(script) API 将其专门应用于 Service Worker 上下文。
// Add our preload realm script to the session.
session.defaultSession.registerPreloadScript({
// Our script should only run in service worker preload realms.
type: 'service-worker',
// The absolute path to the script.
script: path.join(__dirname, 'extension-sw-preload.js'),
});
此外,IPC 现在可在 Service Worker 及其附加的预加载脚本之间通过 ServiceWorkerMain.ipc 类进行。预加载脚本仍将使用 ipcRenderer 模块与其 Service Worker 进行通信。有关更多详细信息,请参阅原始 RFC。
此功能之前有许多其他更改为其奠定了基础
- #45329 重新设计了 Session 模块的预加载 API,以支持注册和取消注册单个预加载脚本。
- #45229 添加了实验性的
contextBridge.executeInMainWorld(executionScript)脚本,以通过上下文桥在主世界中评估 JavaScript。 - #45341 添加了
ServiceWorkerMain类来与主进程中的 Service Workers 交互。
堆栈变化
- Chromium
134.0.6998.44 - Node
22.14.0 - V8
13.5
Electron 35 将 Chromium 从 132.0.6834.83 升级到 134.0.6998.44,Node 从 20.18.1 升级到 22.14.0,V8 从 13.2 升级到 13.5。
新特性
- 添加了
NSPrefersDisplaySafeAreaCompatibilityMode=false到Info.plist以移除应用选项中的“缩放以适应内置摄像头”。 #45357 (同时也在 v34.1.0 中) - 添加了
ServiceWorkerMain类来在主进程中与服务工作线程交互。 #45341- 在
ServiceWorkers上添加了running-status-changed事件,用于指示 Service Worker 的运行状态何时发生变化。 - 在
ServiceWorkers上添加了startWorkerForScope,用于启动先前可能已停止的 Worker。
- 在
- 添加了实验性的
contextBridge.executeInMainWorld以安全地跨世界边界执行代码。 #45330 - 在
'console-message'事件中添加了frame。 #43617 - 在 Windows 上添加了
query-session-end事件并改进了session-end事件。 #44598 - 添加了
view.getVisible()。 #45409 - 添加了
webContents.navigationHistory.restore(index, entries)API,允许恢复导航历史记录。 #45583 - 为
BrowserWindow.setVibrancy添加了可选的动画参数。 #35987 - 为
document.executeCommand("paste")添加了权限支持。 #45471 (同时也在 v34.1.0 中) - 在 Windows 上为
BrowserWindow构造函数选项添加了roundedCorners支持。 #45740 (同时也在 v34.3.0 中) - 添加了对服务工作线程预加载脚本的支持。 #45408
- 支持 Portal 的
globalShortcuts。 必须使用--enable-features=GlobalShortcutsPortal运行 Electron 才能使该功能生效。 #45297
破坏性变更
移除:PrinterInfo 上的 isDefault 和 status 属性
这些属性已从 PrinterInfo 对象中移除,因为它们已从上游 Chromium 中移除。
弃用:session.serviceWorkers 上的 getFromVersionID
session.serviceWorkers.fromVersionID(versionId) API 已弃用,取而代之的是 session.serviceWorkers.getInfoFromVersionID(versionId)。此更改是为了在引入 session.serviceWorkers.getWorkerFromVersionID(versionId) API 后更清楚地说明返回的是哪个对象。
// Deprecated
session.serviceWorkers.fromVersionID(versionId);
// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId);
弃用:Session 上的 setPreloads 和 getPreloads
引入了 registerPreloadScript、unregisterPreloadScript 和 getPreloadScripts 作为已弃用方法的替代品。这些新 API 允许第三方库注册预加载脚本,而无需替换现有脚本。此外,新的 type 选项允许除 frame 之外的额外预加载目标。
// Deprecated
session.setPreloads([path.join(__dirname, 'preload.js')]);
// Replace with:
session.registerPreloadScript({
type: 'frame',
id: 'app-preload',
filePath: path.join(__dirname, 'preload.js'),
});
弃用:WebContents 上 console-message 事件中的 level、message、line 和 sourceId 参数
WebContents 上的 console-message 事件已更新,在 Event 参数中提供详细信息。
// Deprecated
webContents.on(
'console-message',
(event, level, message, line, sourceId) => {},
);
// Replace with:
webContents.on(
'console-message',
({ level, message, lineNumber, sourceId, frame }) => {},
);
此外,level 现在是一个字符串,可能的值为 info、warning、error 和 debug。
行为变更:WebRequestFilter 的 urls 属性。
之前,一个空的 urls 数组被解释为包含所有 URL。 为了显式包含所有 URL,开发者现在应该使用 <all_urls> 模式,这是一个 指定的 URL 模式,它匹配所有可能的 URL。 此更改明确了意图并确保了更可预测的行为。
// Deprecated
const deprecatedFilter = {
urls: [],
};
// Replace with
const newFilter = {
urls: ['<all_urls>'],
};
弃用:systemPreferences.isAeroGlassEnabled()
systemPreferences.isAeroGlassEnabled() 函数已被弃用,没有替代品。自 Electron 23 起,它一直返回 true,因为 Electron 23 仅支持 Windows 10+,在这些系统中 DWM 合成已无法被禁用。
32.x.y 版本停止支持
根据项目的 支持策略,Electron 32.x.y 版本已停止支持。 鼓励开发者和应用程序升级到较新版本的 Electron。
| E35 (25年3月) | E36 (25年4月) | E37 (25年6月) |
|---|---|---|
| 35.x.y | 36.x.y | 37.x.y |
| 34.x.y | 35.x.y | 36.x.y |
| 33.x.y | 34.x.y | 35.x.y |
接下来是什么
短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。
您可以在 此处 找到 Electron 的公共时间线。
有关未来变更的更多信息,请参见 计划中的破坏性变更 页面。

