跳转到主要内容

Electron 5.0.0

·阅读时长 5 分钟

Electron 团队很高兴地宣布 Electron 5.0.0 的发布!您可以通过 npm install electron@latest 来安装它,或者从 我们的发布页面 下载 tarball。本次发布包含了大量的升级、修复和新功能。我们迫不及待地想看到您用它们构建出什么!请继续阅读本文以了解此版本的详细信息,并请随时分享您的反馈!


有什么新内容?

Electron 的大部分功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 会及时更新这些项目,以便为用户提供新的 JavaScript 功能、性能改进和安全修复。在 Electron 5 中,这些包中的每一个都经历了主版本号的更新。

Electron 5 还包括对 Electron 特有 API 的改进。主要更改摘要如下;有关更改的完整列表,请参阅 Electron v5.0.0 发布说明

Promises 化

Electron 5 继续 Promise 化计划,该计划旨在将 Electron 基于回调的 API 转换为使用 Promise。以下 API 已在 Electron 5 中进行 Promise 化处理:

  • app.getFileIcon
  • contentTracing.getCategories
  • contentTracing.startRecording
  • contentTracing.stopRecording
  • debugger.sendCommand
  • Cookies API
  • shell.openExternal
  • webContents.loadFile
  • webContents.loadURL
  • webContents.zoomLevel
  • webContents.zoomFactor
  • win.capturePage

macOS 系统颜色访问

以下函数已更改或添加到 systemPreferences 中,用于访问 macOS 系统的颜色:

  • systemPreferences.getAccentColor
  • systemPreferences.getColor
  • systemPreferences.getSystemColor

进程内存信息

已添加 process.getProcessMemoryInfo 函数,用于获取当前进程的内存使用情况统计信息。

远程 API 的附加过滤

为了提高 remote API 的安全性,添加了新的远程事件,以便 remote.getBuiltinremote.getCurrentWindowremote.getCurrentWebContents<webview>.getWebContents 可以被 过滤

BrowserWindow 上的多个 BrowserViews

BrowserWindow 现在支持在同一个 BrowserWindow 中管理多个 BrowserViews。

破坏性变更

打包应用程序的默认设置

打包应用程序现在将与默认应用程序的行为相同:将创建一个默认的应用程序菜单,除非应用程序已有菜单并且 window-all-closed 事件将被自动处理,除非应用程序已处理该事件。

混合沙箱

混合沙箱模式现在默认启用。使用 sandbox: true 启动的渲染器现在将真正进行沙箱化,而以前只有在启用混合沙箱模式时才会进行沙箱化。

安全改进

为了提高安全性,nodeIntegrationwebviewTag 的默认值现在为 false

拼写检查器现在是异步的

SpellCheck API 已更改为提供 异步结果

弃用

以下 API 在 Electron 5.0.0 中已弃用,并计划在 6.0.0 中移除:

arm 和 arm64 的 Mksnapshot 二进制文件

arm 和 arm64 的 mksnapshot 原生二进制文件已弃用,并将于 6.0.0 中移除。可以使用 x64 二进制文件为 arm 和 arm64 创建快照。

WebContents 上的 ServiceWorker API

为准备移除,WebContents 上的 ServiceWorker API 已弃用。

  • webContents.hasServiceWorker
  • webContents.unregisterServiceWorker

带有沙箱化 WebContents 的自动模块

为了提高安全性,以下模块通过 require 直接使用的行为已被弃用,在沙箱化的 WebContents 中需要通过 remote.require 来包含:

  • electron.screen
  • child_process
  • fs
  • os
  • path

webFrame 隔离世界 API

webFrame.setIsolatedWorldContentSecurityPolicywebFrame.setIsolatedWorldHumanReadableNamewebFrame.setIsolatedWorldSecurityOrigin 已弃用,改用 webFrame.setIsolatedWorldInfo

混合沙箱

enableMixedSandbox 和命令行开关 --enable-mixed-sandbox 仍然存在以兼容,但它们已被弃用且无效。

停止支持 2.0.x

根据我们的 支持版本策略,2.0.x 已达到生命周期终点。

应用反馈计划

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

下一步计划

短期内,您可以期望团队将继续专注于跟进 Electron 所使用的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布一个包含这些组件新版本的 Electron 主要版本。 Electron 6.0.0 的计划时间表 概述了 Electron 6 开发生命周期中的关键日期。此外,请 参阅我们的版本文档 以获取有关 Electron 版本管理的更详细信息。

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