Electron 8.0.0
Electron 8.0.0 已经发布!它包含了 Chromium 80
、V8 8.0
和 Node.js 12.13.0
的升级。我们添加了 Chrome 内置的拼写检查器,以及更多功能!
Electron 团队非常高兴地宣布 Electron 8.0.0 的发布!您可以通过 `npm install electron@latest` 来安装它,或者从我们的 发布网站 下载。本次发布包含了大量的升级、修复和新功能。我们迫不及待地想看到你们用它们构建出什么!请继续阅读以了解本次发布的详细信息,并欢迎分享您的任何反馈!
重要变更
技术栈变更
- Chromium
80.0.3987.86
- Node.js
12.13.0
- V8
8.0
重点特性
- 实现了 Chrome 内置拼写检查功能。更多详细信息请参见 #20692 和 #21266。
- IPC 通信现在使用 v8 的结构化克隆算法。这比现有逻辑更快、功能更丰富、更少出乎意料,并为大型缓冲区和复杂对象带来了 2 倍的性能提升。小消息的延迟没有显著影响。更多详细信息请参见 #20214。
请参阅 8.0.0 发行说明,了解新功能和更改的完整列表。
破坏性变更
- 在上下文感知模块的弃用警告中显示模块名称。 #21952
- 这是为未来要求渲染进程中加载的原生 Node 模块必须是 N-API 或 Context Aware 的一项持续工作。完整的相关信息和拟议时间表详见 此 issue。
- 通过 IPC 发送的值现在使用结构化克隆算法进行序列化。#20214
- 由于缺乏维护者来处理此功能,屏幕外渲染目前已禁用。在 Chromium 升级期间此功能已损坏,随后被禁用。#20772
有关这些及未来更改的更多信息,请参阅计划中的重大更改页面。
API 更改
app
API 变更BrowserWindow
API 变更- 更新了文档,指出 BrowserWindow 的
hasShadow
选项在所有平台上都可用 #20038 - 向 BrowserWindow 选项添加了
trafficLightPosition
选项,以允许自定义红绿灯按钮的位置。 #21781 - 向 BrowserWindow 添加了
accessibleTitle
选项,用于设置可访问的窗口标题 #19698 BrowserWindow.fromWebContents()
现在可以返回 null #19983- 添加了
BrowserWindow.getMediaSourceId()
和BrowserWindow.moveAbove(mediaSourceId)
。 #18926 - 在 macOS 上添加了对
will-move
事件的支持。 #19641
- 更新了文档,指出 BrowserWindow 的
- 为之前未记录的
crashReporter.getCrashesDirectory()
添加了文档。#20417 dialog
API 变更Notification
API 变更session
API 变更- 在 macOS 上的
shell.moveItemToTrash(fullPath[, deleteOnFail])
中添加了选项,用于指定 moveItemToTrash 失败时的处理方式。#19700 systemPreferences
API 变更- 添加了
nativeTheme.themeSource
,允许应用覆盖 Chromium 和操作系统的主题选择。 #19960 - TouchBar API 变更
tray
API 变更webContents
API 变更- 在 WebContents API 上公开了 `contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture])`,用于在隔离世界中执行 JavaScript。 #21190
- 添加了捕获隐藏的 webContents 的方法。 #21679
- 向
webContents.print([options], [callback])
添加了选项,以启用打印页面页眉和页脚的自定义。 #19688 - 通过 `webContents.getAllSharedWorkers()` 和 `webContents.inspectSharedWorkerById(workerId)` 添加了检查特定共享工作者的能力。 #20389
- 在 WebContents.printToPDF() 中添加了对
fitToPageEnabled
和scaleFactor
选项的支持。 #20436
- 更新了
webview.printToPDF
文档,以表明返回类型现在是 Uint8Array。 #20505
已弃用的 API
以下 API 现已弃用
- 在下一个主要发布版本移除之前,已弃用 `BrowserWindow.setVisibleOnAllWorkspaces` 中的无效 `visibleOnFullScreen` 选项。 #21732
- 弃用了 macOS 上
systemPreferences.getColor(color)
的alternate-selected-control-text
。 #20611 - 弃用了 `webContents`、`webFrame` 和 `
` 标签上的 `setLayoutZoomLevelLimits`,因为 Chromium 已移除此功能。 #21296 app.allowRendererProcessReuse
的默认值false
现已弃用。 #21287- 弃用了
<webview>.getWebContents()
,因为它依赖于 remote 模块。 #20726
停止对 5.x.y 的支持
根据项目的 支持策略,Electron 5.x.y 已结束支持。鼓励开发者和应用程序升级到新版本的 Electron。
应用反馈计划
我们继续使用 应用反馈计划 进行测试。参与此计划的项目会在其应用程序上测试 Electron Beta 版本;作为回报,他们发现的新 Bug 会被优先处理,以发布到稳定版。如果您想参与或了解更多信息,请 查看我们关于该计划的博客文章。
下一步计划
短期内,您可以期望团队将继续专注于跟进 Electron 主要组成部分(包括 Chromium、Node 和 V8)的开发。尽管我们非常谨慎,不承诺发布日期,但我们的计划是大约每季度发布一个包含这些组件新版本的 Electron 主要版本。 暂定的 9.0.0 时间表 勾勒出了 Electron 9 开发生命周期中的关键日期。此外,请 参阅我们的版本文档,了解有关 Electron 版本管理的更详细信息。
有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划中的重大更改文档。
弃用 remote
模块(从 Electron 9 开始)
出于严重的安全性考量,我们已开始计划从 Electron 9 开始弃用 remote
模块。您可以阅读并关注 此 issue,其中详细说明了我们这样做的原因,并包含了弃用的拟议时间表。