Electron 9.0.0
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` 安装它,或者从我们的发布网站下载它。 这个版本充满了升级、修复和新功能。 我们迫不及待地想看看您会用它们构建出什么! 请继续阅读有关此版本的详细信息,并请分享您的任何反馈!
重要变更
技术栈变更
- Chromium
83.0.4103.64
- Node.js
12.14.1
- V8
8.3
重点特性
有关新功能和变化的完整列表,请参见 9.0.0 发行说明。
破坏性变更
- 在 `enableRemoteModule: true` 未设置的情况下使用 `remote` 会出现弃用警告。 #21546
- 这是我们计划弃用 `remote` 模块并将其移至用户空间的第一步。 您可以阅读并关注这个 issue,其中详细说明了我们这样做的原因,并包含了一个建议的弃用时间表。
- 默认设置 `app.enableRendererProcessReuse` 为 true。 #22336
- 通过 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 变更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` 的更多信息,如何轻松启用它及其安全优势,请参阅我们专门的上下文隔离文档。