跳过主内容

Electron 8.0.0

·阅读 7 分钟

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


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

值得注意的更改

堆栈更改

重点功能

  • 实现了 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 更改
    • dialog.showOpenDialogdialog.showOpenDialogSync 添加了 dontAddToRecent 属性,以防止文档在 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(),它会将焦点返回到任务栏通知区域。特性:添加 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> Tag 上的 setLayoutZoomLevelLimits,因为 Chromium 移除了此功能。#21296
  • app.allowRendererProcessReuse 的默认值 false 现已弃用。#21287
  • 弃用了 <webview>.getWebContents(),因为它依赖于 remote 模块。#20726

5.x.y 版本支持结束

根据项目的支持政策,Electron 5.x.y 已达到支持终止日期。鼓励开发人员和应用程序升级到较新版本的 Electron。

应用反馈计划

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

下一步

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

有关即将发布的 Electron 版本中计划的破坏性更改的信息,请参阅我们的“计划的破坏性更改”文档

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

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