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 的 issue tracker 中报告。
值得注意的更改
Service Worker 预加载脚本以改进扩展支持
最初由 @samuelmaddock 在 RFC #8 中提出,Electron 35 添加了将预加载脚本附加到 Service Workers 的能力。随着 Chrome 的 Manifest V3 扩展将大量工作路由到扩展 service workers,此功能填补了 Electron 对现代 Chrome 扩展支持方面的空白。
当在 Session 级别以编程方式注册预加载脚本时,您现在可以使用 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 Workers 和其附加的预加载脚本之间通过 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
。
新功能
- 在
Info.plist
中添加了NSPrefersDisplaySafeAreaCompatibilityMode
=false
,以从应用程序选项中删除 “缩放以适应内置摄像头下方”。 #45357 (也在 v34.1.0 中) - 添加了
ServiceWorkerMain
类,以便在主进程中与 service workers 交互。 #45341- 在
ServiceWorkers
上添加了running-status-changed
事件,以指示 service worker 的运行状态何时更改。 - 在
ServiceWorkers
上添加了startWorkerForScope
,以启动可能先前已停止的 worker。
- 在
- 添加了实验性的
contextBridge.executeInMainWorld
,以安全地跨世界边界执行代码。 #45330 - 将
frame
添加到'console-message'
事件。 #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 上为
roundedCorners
BrowserWindow 构造函数选项添加了支持。 #45740 (也在 v34.3.0 中) - 添加了对 service worker 预加载脚本的支持。 #45408
- 支持 Portal 的
globalShortcuts
。Electron 必须在--enable-features=GlobalShortcutsPortal
的情况下运行才能使该功能正常工作。 #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+,在 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 的公共时间表。
有关未来更改的更多信息,请访问计划的重大更改页面。