跳到主要内容

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 发布说明,了解新功能和变化的完整列表。

重大更改

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

API 更改

  • 新增 webFrameMain API:webFrameMain 模块可用于查找现有 WebContents 实例中的帧。这是现有 webFrame API 在主进程中的等效功能。有关此新 API 的更多信息,请参见此处以及我们的文档
  • app API 更改
    • 为 `'child-process-gone'` / `app.getAppMetrics()` 添加了非本地化 `serviceName`。#25975
    • 新增 `app.runningUnderRosettaTranslation` 属性,用于检测在 Apple silicon 上是否通过 Rosetta 转换运行。#26444
    • 为 `render-process-gone` 详细信息(app 和 webContents)添加了 `exitCode`。#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-loaded`、`extension-unloaded` 和 `extension-ready` 事件。#25385
    • 新增 `session.setSSLConfig()` 以允许配置 SSL。#25461
    • 新增支持在 `session.setProxy()` 中明确指定 `direct`、`auto_detect` 或 `system` 模式。#24937
    • 新增 Serial API 支持。#25237
    • 新增 API 以启用/禁用拼写检查器。#26276
  • shell API 更改
    • 新增了一个异步 shell.trashItem() API,取代了同步的 shell.moveItemToTrash()#25114
  • webContents API 更改
    • 在控制台添加了一个小提示,以帮助调试渲染器崩溃。#25317
    • 为 webRequest 处理程序中的 details 对象添加了 `frame` 和 `webContents` 属性。#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 版本。Electron 13.0 的暂定时间表列出了 Electron 13.0 开发生命周期中的关键日期。此外,有关 Electron 中版本控制的更详细信息,请参阅我们的版本控制文档

有关 Electron 即将发布的版本中计划的重大更改的信息,请参阅我们的计划的重大更改文档