跳到主内容

Electron 12.0.0

·阅读 5 分钟

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。#25249
  • 新增 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
    • 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-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 主要版本,其中包含这些组件的新版本。Electron 13.0 的暂定时间表列出了其开发生命周期中的关键日期。此外,请参阅我们的版本控制文档,了解有关 Electron 版本控制的更多详细信息。

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