跳到主要内容

Electron 5.0.0

·阅读时长 4 分钟

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


新特性?

Electron 的大部分功能由 Chromium、Node.js 和 V8 等核心组件提供。Electron 与这些项目保持同步,以便为用户提供新的 JavaScript 特性、性能改进和安全修复。这些软件包在 Electron 5 中都有主要版本更新

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

Promise 化

Electron 5 继续推进Promise 化计划,将 Electron 基于回调的 API 转换为使用 Promises。Electron 5 中转换了以下 API:

  • 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 中管理多个 BrowserView。

重大更改

打包应用的默认设置

打包应用现在将与默认应用行为一致:除非应用已有菜单,否则将创建一个默认应用菜单;并且除非应用处理 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 版本;作为回报,他们发现的新错误将优先处理以确保稳定版本发布。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章

后续计划

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

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