跳转到主要内容

Electron 9.0.0

·阅读时长 5 分钟

Electron 9.0.0 已发布! 它包含了对 Chromium 83、V8 8.3 和 Node.js 12.14 的升级。 我们为拼写检查功能添加了几个新的 API 集成,启用了 PDF 查看器,以及更多!


Electron 团队很高兴地宣布 Electron 9.0.0 正式发布! 你可以通过 npm 使用 `npm install electron@latest` 安装它,或者从我们的发布网站下载它。 这个版本充满了升级、修复和新功能。 我们迫不及待地想看看您会用它们构建出什么! 请继续阅读有关此版本的详细信息,并请分享您的任何反馈!

重要变更

技术栈变更

重点特性

  • 对拼写检查器功能进行了多项改进。 详见 #22128#22368
  • 改进了 Linux 上窗口事件处理程序的效率。 #23260
  • 启用 PDF 查看器。 #22131

有关新功能和变化的完整列表,请参见 9.0.0 发行说明

破坏性变更

  • 在 `enableRemoteModule: true` 未设置的情况下使用 `remote` 会出现弃用警告。 #21546
    • 这是我们计划弃用 `remote` 模块并将其移至用户空间的第一步。 您可以阅读并关注这个 issue,其中详细说明了我们这样做的原因,并包含了一个建议的弃用时间表。
  • 默认设置 `app.enableRendererProcessReuse` 为 true。 #22336
    • 这项工作是为了满足未来的一个要求,即在渲染器进程中加载的原生 Node 模块必须是N-API上下文感知的。 完整信息和建议的时间表详见这个 issue
  • 通过 IPC 发送非 JavaScript 对象现在会抛出异常。 #21560
    • 此行为在 Electron 8.0 中已被弃用。 在 Electron 9.0 中,旧的序列化算法已被移除,发送这类不可序列化的对象现在将抛出“object could not be cloned”错误。

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

API 更改

  • shell API 变更
    • shell.openItem API 已被异步的 `shell.openPath API` 取代。 提案
  • session API 变更
    • 添加了 `session.listWordsFromSpellCheckerDictionary` API 以列出词典中的自定义单词。 #22128
    • 添加了 `session.removeWordFromSpellCheckerDictionary` API 以从词典中删除自定义单词。 #22368
    • 添加了 `session.serviceWorkerContext` API 来访问基本的 service worker 信息并接收来自 service worker 的控制台日志。 #22313
  • app API 变更
    • 在 macOS 的 `app.focus()` 中添加了一个新的 force 参数,以允许应用强制获取焦点。 #23447
  • BrowserWindow API 变更
    • 在 `BrowserWindow` 上为一些 getter/setter 对添加了属性访问支持。 #23208

已弃用的 API

以下 API 现已弃用或被移除

  • shell.openItem API 现已弃用,并由异步的 `shell.openPath API` 替代。
  • 在 Electron 8.0 中被弃用的 `<webview>.getWebContents` 现已被移除。
  • 在 Electron 8.0 中被弃用的 `webFrame.setLayoutZoomLevelLimits` 现已被移除。

停止支持 6.x.y

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

下一步计划

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

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

将 `contextIsolation` 的默认值从 `false` 更改为 `true` (从 Electron 10 开始)

在没有 contextIsolation 的情况下,渲染器进程中运行的任何代码都可以相当容易地访问 Electron 内部或应用的预加载脚本。 然后,该代码可以执行 Electron 希望加以限制的特权操作。

更改此默认值可以提高 Electron 应用程序的默认安全性,因此应用程序将需要明确选择不安全的行为。 Electron 将在 Electron 10.0 中弃用 `contextIsolation` 的当前默认值,并在 Electron 12.0 中更改为新的默认值 (`true`)。

有关 `contextIsolation` 的更多信息,如何轻松启用它及其安全优势,请参阅我们专门的上下文隔离文档