跳转到主要内容

Electron 20.0.0

2022年8月2日 ·阅读时长 4 分钟

Electron 20.0.0 现已发布!此版本升级到了 Chromium 104、V8 10.4 和 Node.js 16.15.0。请阅读下文了解更多详情!


Electron 团队很高兴地宣布 Electron 20.0.0 正式发布!您可以通过 npm 使用 npm install electron@latest 来安装它,或者从我们的发布网站下载。请继续阅读以了解此版本的详细信息,并随时分享您的任何反馈!

重要变更

新特性

  • 在 Windows 上增加了沉浸式暗黑模式。#34549
  • 增加了对类似面板行为的支持。窗口可以浮动在全屏应用程序之上。#34665
  • 更新了 Windows 控件覆盖按钮,使其在 Windows 11 上的外观和感觉更原生。#34888
  • 除非指定了 nodeIntegration: truesandbox: false,否则渲染器现在默认是沙盒化的。#35125
  • 在使用 nan 构建原生模块时增加了安全保障。#35160

技术栈变更

破坏性与 API 变更

以下是 Electron 20 中引入的重大变更。有关这些变更和未来变更的更多信息,请参阅计划中的重大变更页面。

默认值变更:没有 nodeIntegration: true 的渲染器默认被沙盒化

以前,指定了预加载脚本的渲染器默认是非沙盒化的。这意味着,预加载脚本默认可以访问 Node.js。在 Electron 20 中,这个默认设置已经改变。从 Electron 20 开始,除非指定了 nodeIntegration: truesandbox: false,否则渲染器将默认是沙盒化的。

如果您的预加载脚本不依赖于 Node,则无需任何操作。如果您的预加载脚本确实依赖于 Node,那么要么重构它们以从渲染器中移除 Node 的使用,要么为相关渲染器明确指定 sandbox: false

修复:nan 原生模块中的自发性崩溃

在 Electron 20 中,我们更改了两个与原生模块相关的项目:

  1. V8 头文件现在默认使用 c++17。这个标志已添加到 electron-rebuild 中。
  2. 我们修复了一个问题,即一个缺失的 include 会导致依赖 nan 的原生模块发生自发性崩溃。

为获得最佳稳定性,我们建议在重新构建原生模块时,特别是依赖 nan 的模块,使用 node-gyp >=8.4.0 和 electron-rebuild >=3.2.9。更多信息请参见 electron #35160 和 node-gyp #2497

已移除:Linux 上的 .skipTaskbar

在 X11 上,skipTaskbar 会向 X11 窗口管理器发送一条 _NET_WM_STATE_SKIP_TASKBAR 消息。Wayland 没有直接的等效功能,而已知的变通方法有不可接受的弊端(例如,GNOME 中的 Window.is_skip_taskbar 需要不安全模式),因此 Electron 无法在 Linux 上支持此功能。

终止对 17.x.y 的支持

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

E18 (22年3月)E19 (22年5月)E20 (22年8月)E21 (22年9月)E22 (22年12月)
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y
16.x.y17.x.y18.x.y19.x.y20.x.y
15.x.y--------

下一步计划

短期内,您可以预期团队将继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。虽然我们谨慎地不对发布日期做出承诺,但我们的计划是大约每 2 个月发布一次 Electron 的新主版本,并包含这些组件的新版本。

您可以在此处找到 Electron 的公开时间线

有关未来变更的更多信息,请参阅计划中的破坏性变更页面。