跳转到主要内容

Electron 12.0.0

·7分钟阅读

Electron 12.0.0 已发布!它包含了 Chromium 89、V8 8.9 和 Node.js 14.16 的升级。我们对 remote 模块进行了更改,为 contextIsolation 设置了新的默认值,添加了新的 webFrameMain API,并进行了通用改进。请继续阅读以了解更多详情!


Electron 团队很高兴地宣布 Electron 12.0.0 版本发布!您可以通过 npm 使用 npm install electron@latest 安装它,或从我们的 发布网站 下载。请继续阅读以了解此版本的详细信息,并分享您的反馈!

堆栈变化

值得注意的变化

  • ContextBridge exposeInMainWorld 方法现在可以暴露非对象 API。 #26834
  • 已从 Node 12 升级到 Node 14。 #23249
  • 添加了一个新的 webFrameMain API,用于从主进程访问 WebContents 实例的子框架。 #25464
  • contextIsolationworldSafeExecuteJavaScript 的默认值现在为 true#27949 #27502

请参阅 12.0.0 版本说明,以获取完整的特性和变更列表。

破坏性变更

  • 已弃用 remote 模块。它已被 @electron/remote 替代。 #25293
  • contextIsolation 的默认值更改为 true#27949
  • worldSafeExecuteJavaScript 的默认值更改为 true#27502
  • crashReporter.start({ compress }) 的默认值从 false 更改为 true#25288
  • 已移除 Flash 支持:Chromium 已经移除了对 Flash 的支持,这也已在 Electron 12 中移除。请参阅 Chromium 的 Flash 路线图,了解更多详细信息。
  • 要求 x86 上的 Chrome 使用 SSE3:Chromium 已经移除了对不满足最低 SSE3(Streaming SIMD Extensions 3)支持的旧 x86 CPU 的支持。此支持也已在 Electron 12 中移除。

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

API 变更

  • 添加了 webFrameMain API:webFrameMain 模块可用于查找现有 WebContents 实例中的框架。这是现有 webFrame API 的主进程等效项。有关此新 API 的更多信息,请参见 此处,以及我们的 文档
  • app API 变更
    • 添加了 'child-process-gone' / app.getAppMetrics() 的非本地化 serviceName#25975
    • 添加了新的 app.runningUnderRosettaTranslation 属性,用于检测在 Apple silicon 上使用 rosetta 运行时的情况。 #26444
    • 在 app 和 webContents 中添加了 exitCoderender-process-gone 详情。 #27677
  • BrowserWindow API 变更
    • 添加了 BrowserWindow.isTabletMode() API。 #25209
    • BrowserWindow 添加了 resized(Windows/macOS)和 moved(Windows)事件。 #26216
    • 添加了一个新的 system-context-menu 事件,用于允许防止和覆盖系统上下文菜单。 #25795
    • 添加了 win.setTopBrowserView(),以便可以提升 BrowserView#27713
    • 添加了 webPreferences.preferredSizeMode,以允许根据文档的最小尺寸调整视图大小。 #25874
  • contextBridge API 更改
    • 允许 ContextBridge exposeInMainWorld 方法暴露非对象 API。 #26834
  • display API 更改
    • 添加了 Display 对象的 displayFrequency 属性,以允许获取 Windows 上的刷新率信息。 #26472
  • extensions API 更改
    • 添加了对某些 chrome.management API 的支持。 #25098
  • MenuItem API 更改
    • 添加了对显示 macOS 分享菜单的支持。 #25629
  • net API 更改
    • net.request() 添加了一个新的 credentials 选项。 #25284
    • 添加了 net.online,用于检测当前是否存在互联网连接。 #21004
  • powerMonitor API 更改
    • 添加了 powerMonitor.onBatteryPower#26494
    • 在 macOS 上为 powerMonitor 添加了快速用户切换事件。 #25321
  • session API 变更
    • ses.loadExtension() API 添加了 allowFileAccess 选项。 #27702
    • session.setPermissionRequestHandler 添加了 display-capture API。 #27696
    • session.setSSLConfig 添加了一个 disabledCipherSuites 选项。 #25818
    • session 添加了 extension-loadedextension-unloadedextension-ready 事件。 #25385
    • 添加了 session.setSSLConfig(),以允许配置 SSL。 #25461
    • 添加了对在 session.setProxy() 中显式指定 directauto_detectsystem 模式的支持。 #24937
    • 添加了 Serial API 支持。 #25237
    • 添加了启用/禁用拼写检查器的 API。 #26276
  • shell API 变更
    • 添加了一个新的异步 shell.trashItem() API,取代了同步 shell.moveItemToTrash()#25114
  • webContents API 变更
    • 在控制台中添加了一个小的提示,以帮助调试渲染器崩溃。 #25317
    • 在 webRequest 处理程序中,将 framewebContents 属性添加到详情对象中。 #27334
    • 添加了 webContents.forcefullyCrashRenderer(),以强制终止渲染器进程,以帮助恢复卡死的渲染器。 #25580
    • 添加了 setWindowOpenHandler API,用于渲染器创建的子窗口,并弃用了 new-window 事件。 #24517
  • webFrame API 更改
    • 为渲染器添加了拼写检查 API。 #25060

移除/弃用变更

以下 API 已被移除或现已弃用

  • 已弃用 remote 模块。它已被 @electron/remote 替代。 #25293
  • 移除了已弃用的 crashReporter API。 #26709
  • 移除了打包应用程序中默认“帮助”菜单中的 Electron 网站链接。 #25831

9.x.y 版本停止支持

根据项目的 支持策略,Electron 9.x.y 版本已停止支持。鼓励开发者和应用程序升级到较新版本的 Electron。

接下来是什么

在短期内,团队将继续专注于保持构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。虽然我们小心谨慎,不会承诺发布日期,但我们的计划是大约每季度发布 Electron 的新主要版本,其中包含这些组件的新版本。 暂定的 13.0.0 时间表 概述了 Electron 13.0 开发生命周期的关键日期。此外,请参阅我们的版本控制文档,了解有关 Electron 版本控制的更多详细信息。

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