跳至主要内容

Electron 8.0.0

·阅读时长 6 分钟

Electron 8.0.0 现已发布!它包含了对 Chromium 80、V8 8.0 和 Node.js 12.13.0 的升级。我们添加了 Chrome 内置的拼写检查器,以及更多功能!


Electron 团队很高兴地宣布发布 Electron 8.0.0!您可以通过 npm install electron@latest 使用 npm 安装它,或从我们的 发布网站 下载它。此版本包含了大量升级、修复和新功能。我们迫不及待地想看看您将用它们构建什么!请继续阅读以了解有关此版本的详细信息,并请分享您的任何反馈!

重大变化

堆栈更改

亮点功能

  • 实现了 Chrome 内置拼写检查器功能的使用。请参阅 #20692#21266 中的更多详细信息。
  • IPC 通信现在使用 v8 的结构化克隆算法。这比现有的逻辑更快、功能更强大且更不容易出错,并且为大型缓冲区和复杂对象带来了 2 倍的性能提升。小型消息的延迟不会受到显著影响。请参阅 #20214 中的更多详细信息。

请参阅 8.0.0 发行说明,以获取新功能和更改的完整列表。

重大更改

  • 在针对上下文感知模块的弃用警告中显示模块名称。 #21952
    • 这是未来要求在渲染器进程中加载的原生 Node 模块必须是 N-API上下文感知 的后续工作。完整的信息和建议的时间表详见 此问题
  • 通过 IPC 发送的值现在使用结构化克隆算法进行序列化。 #20214
  • 由于缺少维护人员来处理此功能,因此当前已禁用离屏渲染。它在 Chromium 升级期间中断,随后被禁用。 #20772

有关这些更改和未来更改的更多信息,请参阅 计划中的重大更改 页面。

API 更改

  • app API 更改
    • 添加了 app.getApplicationNameForProtocol(url)#20399
    • 在 Windows 上添加了 app.showAboutPanel()app.setAboutPanelOptions(options) 支持。 #19420
  • 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
  • 记录了以前未记录的 crashReporter.getCrashesDirectory()#20417
  • dialog API 更改
    • 添加了 dontAddToRecent 属性到 dialog.showOpenDialogdialog.showOpenDialogSync,以防止在 Windows 中的打开对话框中将文档添加到最近使用的文档。 #19669
    • 添加了对 dialog.showSaveDialogdialog.showSaveDialogSync 的属性自定义。 #19672
  • Notification API 更改
    • 添加了 timeoutType 选项,以允许 Linux/Windows 用户设置通知超时的类型。 #20153
    • 添加了 urgency 选项以在 Linux 通知上设置紧急程度。 #20152
  • session API 更改
    • 更新了 session.setProxy(config)session.setCertificateVerifyProc(proc) 的文档,以说明可选选项。 #19604
    • 添加了 session.downloadURL(url) 以允许在没有 BrowserWindow 的情况下触发下载。 #19889
    • 通过 session.preconnect(options)preconnect 事件添加了对 HTTP 预连接资源提示的支持。 #18671
    • 添加了 session.addWordToSpellCheckerDictionary 以允许在字典中使用自定义单词 #21297
  • 在 macOS 上添加了对 shell.moveItemToTrash(fullPath[, deleteOnFail]) 的选项,以指定当 moveItemToTrash 失败时会发生什么。 #19700
  • systemPreferences API 更改
    • 更新了 macOS 的 systemPreferences.getColor(color) 文档。 #20611
    • systemPreferences.getMediaAccessStatus() 添加了 screen 媒体类型。 #20764
  • 添加了nativeTheme.themeSource,允许应用覆盖 Chromium 和操作系统的主题选择。 #19960
  • TouchBar API 更改
    • TouchBarButtonTouchBarLabel添加了accessibilityLabel属性,以改善 TouchBarButton/TouchBarLabel 的辅助功能。 #20454
    • 更新了与 TouchBar 相关的文档 #19444
  • tray API 更改
    • tray.displayBalloon()添加了新选项:iconTypelargeIconnoSoundrespectQuietTime#19544
    • 添加了tray.removeBalloon(),用于移除已显示的气泡通知。 #19547
    • 添加了tray.focus(),用于将焦点返回到任务栏通知区域。feat: add tray.focus() #19548
  • webContents API 更改
    • 添加了contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]),以在 webContents API 上公开 executeJavaScriptInIsolatedWorld。 #21190
    • 添加了捕获隐藏的 webContents 的方法。 #21679
    • webContents.print([options], [callback])添加了选项,以启用打印页面页眉和页脚的自定义。 #19688
    • 添加了通过webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId)检查特定共享工作线程的功能。 #20389
    • 在 WebContents.printToPDF() 中添加了对fitToPageEnabledscaleFactor选项的支持。 #20436
  • 更新了webview.printToPDF文档,指示返回类型现在为 Uint8Array。 #20505

已弃用的 API

以下 API 现已弃用

  • 在下一个主要版本中删除之前,弃用了BrowserWindow.setVisibleOnAllWorkspaces中不工作的visibleOnFullScreen选项。 #21732
  • 弃用了 macOS 上systemPreferences.getColor(color)alternate-selected-control-text#20611
  • 弃用了webContentswebFrame<webview> 标签上的setLayoutZoomLevelLimits,因为 Chromium 删除了此功能。 #21296
  • app.allowRendererProcessReuse的默认值false现已弃用。 #21287
  • 弃用了<webview>.getWebContents(),因为它依赖于远程模块。 #20726

5.x.y 版本的支持结束

根据项目的支持策略,Electron 5.x.y 已结束支持。鼓励开发人员和应用程序升级到较新版本的 Electron。

应用反馈计划

我们继续使用我们的应用反馈计划进行测试。参与此计划的项目在其应用上测试 Electron 测试版;作为回报,他们发现的新错误将被优先考虑用于稳定版本。如果您想参与或了解更多信息,请查看我们关于该计划的博文

接下来是什么

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。虽然我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布 Electron 的新主要版本,其中包含这些组件的新版本。Electron 9.0.0 的初步时间表列出了 Electron 9 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,以获取有关 Electron 中版本控制的更多详细信息。

有关 Electron 未来版本中计划的重大更改的信息,请参阅我们的计划重大更改文档

remote模块的弃用(从 Electron 9 开始)

由于存在严重的安全性问题,我们开始计划从 Electron 9 开始弃用remote模块。您可以阅读并关注此问题,其中详细说明了我们这样做的原因,并包括了弃用的拟议时间表。