Electron 14.0.0 已发布!它包含 Chromium 93
和 V8 9.3
的升级。我们添加了几个 API 更新、错误修复和常规改进。阅读以下内容以了解更多详细信息!
Electron 团队很高兴地宣布 Electron 14.0.0 发布!您可以通过 npm install electron@latest
使用 npm 安装它,或从我们的发行网站下载。继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!
重大更改
Electron 发布节奏变更
从 2021 年 9 月开始(Electron 15),Electron 将每 8 周发布一个新的主要稳定版本。您可以在此处阅读完整详细信息。Electron 15 将于 2021 年 9 月 1 日开始测试版,稳定版将于 2021 年 9 月 21 日发布。您可以在此处找到 Electron 的公开时间线。此外,Electron 将在 2022 年 5 月之前将受支持的版本从最新的三个版本更改为最新的四个版本。请参阅我们的版本控制文档,以获取有关 Electron 中版本控制的更详细的信息。
堆栈更改
- Chromium
93
- Node.js
14.17.0
- V8
9.3
亮点功能
- 默认更改:
nativeWindowOpen
现在默认为 true
。(请参阅文档)
- 子窗口不再从其父窗口继承 BrowserWindow 构造选项。#28550
- 添加了新的
session.storagePath
API 以获取磁盘上特定于会话的数据的路径。#28665
- 添加了
process.contextId
,供 @electron/remote
使用。#28007
- 在Electron Fuse后面添加了实验性的 Cookie 加密支持。#29492
有关新功能和更改的完整列表,请参阅14.0.0 版本说明。
重大更改
以下是 Electron 14 中引入的重大更改。有关这些更改和未来更改的更多信息,请访问计划中的重大更改页面。
已移除:app.allowRendererProcessReuse
app.allowRendererProcessReuse
属性已移除,这是我们计划更紧密地遵循 Chromium 的进程模型以提高安全性和性能并增强可维护性的部分。
有关更多详细信息,请参阅#18397。
已移除:浏览器窗口关联性
构造新的 BrowserWindow
时,affinity
选项已移除,这是我们计划更紧密地遵循 Chromium 的进程模型以提高安全性和性能并增强可维护性的部分。
有关更多详细信息,请参阅#18397。
API 更改:window.open()
可选参数 frameName
不再设置窗口标题。此行为现在遵循原生文档中针对 windowName
参数的说明。
如果您使用此参数来设置窗口标题,则可以使用win.setTitle(title)
方法。
已移除:worldSafeExecuteJavaScript
worldSafeExecuteJavaScript
已移除,且没有替代方案。请确保您的代码在启用此属性的情况下也能正常工作。自 Electron 12 起,该属性已默认启用。
如果您使用 webFrame.executeJavaScript
或 webFrame.executeJavaScriptInIsolatedWorld
,则会受到此更改的影响。您需要确保这两种方法返回的值都受Context Bridge API支持,因为这些方法使用相同的传递语义。
默认值更改:nativeWindowOpen
默认值为 true
在 Electron 14 之前,window.open
默认情况下会使用 BrowserWindowProxy
进行模拟。这意味着 window.open('about:blank')
不能用于打开可同步脚本化的子窗口,以及其他不兼容性。nativeWindowOpen
不再是实验性功能,现在是默认功能。
有关更多详细信息,请参阅Electron 中的 window.open 文档。
已移除:从父窗口继承 BrowserWindowConstructorOptions
在 Electron 14 之前,使用 window.open
打开的窗口会继承其父窗口的 BrowserWindow 构造函数选项,例如 transparent
和 resizable
。从 Electron 14 开始,此行为已移除,窗口将不再继承其父级的任何 BrowserWindow 构造函数选项。
改为使用 setWindowOpenHandler
显式设置新窗口的选项。
webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
},
};
});
已移除:additionalFeatures
WebContents 的 new-window
和 did-create-window
事件中已弃用的 additionalFeatures
属性已移除。由于 new-window
使用位置参数,因此该参数仍然存在,但始终为空数组 []
。(注意:new-window
事件本身已弃用,并已由 setWindowOpenHandler
替换。)窗口功能中的裸键现在将在选项对象中显示为值为 true
的键。
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
}
});
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
}
});
已移除:remote
模块
Electron 12 中已弃用的 remote
模块现已从 Electron 本身中移除,并提取到一个单独的包中,即@electron/remote
。@electron/remote
模块在主进程和渲染器进程之间桥接 JavaScript 对象。这使您可以像在渲染器进程中一样访问仅主进程对象。这是 remote
模块的直接替代。有关迁移说明和参考,请参阅模块的自述文件。
API 更改
- 添加了
BrowserWindow.isFocusable()
方法以确定窗口是否可聚焦。#28642
- 添加了
WebFrameMain.visibilityState
实例属性。#28706
- 将
disposition
、referrer
和 postBody
添加到传递给使用 setWindowOpenHandler
注册的窗口打开处理程序的详细信息对象中。#28518
- 添加了
process.contextId
,供 @electron/remote
使用。#28007
- 在Electron Fuse后面添加了实验性的 Cookie 加密支持。#29492
- 为
webRequest
侦听器详细信息添加了缺少的 resourceType
转换:font
、ping
、cspReport
、media
、webSocket
。#30050
- 添加了新的
session.storagePath
API 以获取磁盘上特定于会话的数据的路径。#28665
- 添加了对 macOS 上的 Windows 控制叠加的支持。#29986
- 添加了对使用
--log-file=.../path/to/file.log
将 Chromium 日志记录到文件中的支持。此外,现在可以通过在第一个 JS tick 期间附加命令行开关来从 JavaScript 启用日志记录。#29963
- 在 node crypto 中添加了对 des-ede3 密码的支持。#27897
- 添加了一个
ContextBridgeMutability
功能,允许修改上下文桥对象。#27348
已移除/弃用的更改
以下 API 已移除或现已弃用
- 在 Electron 12 中弃用后,
remote
模块已移除。#25734
- 子窗口不再从其父窗口继承 BrowserWindow 构造选项。#28550
- 已移除
new-window
和 did-create-window
WebContents 事件中已弃用的 additionalFeatures
属性。#28548
- 已移除已弃用的
app.allowRendererProcessReuse
和 BrowserWindow affinity
选项。#26874
- 当
uploadToServer
为 false 时,crashReporter.start
的 submitURL
选项不再是必需参数。#28105
11.x.y 版本支持结束
根据项目的支持策略,Electron 11.x.y 已达到支持结束日期。鼓励开发人员和应用程序升级到更新版本的 Electron。
后续工作
在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。虽然我们谨慎地不对发布日期做出承诺,但我们的计划是大约每季度发布包含这些组件的新版本的新主要版本的 Electron。
有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划中的重大更改。