跳转到主内容

Electron 12.0.0

· 阅读时间:约 6 分钟

Electron 12.0.0 已发布! It includes upgrades to Chromium 89, V8 8.9 and Node.js 14.16. We've added changes to the remote module, new defaults for contextIsolation, a new webFrameMain API, and general improvements. 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 12.0.0.0! 您可以通过 npm 安装electron@later 或者从我们的 发布网站 下载它。 Continue reading for details about this release, and please share any feedback you have!

重要变化

架构(Stack)更新

Highlight Features

  • The ContextBridge exposeInMainWorld method can now expose non-object APIs. #26834
  • 将Nodejs版本从12更新至14 #23249
  • Added a new webFrameMain API for accessing sub-frames of a WebContents instance from the main process. #25464
  • contextIsolationworldSafeExecuteJavaScript 的默认值更改为 true#27949 #27502

有关新功能和变更的完整列表,请参阅 12.0.0 发布通知

重大更改

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

API 更改

  • Added webFrameMain API: The webFrameMain module can be used to look up frames across existing WebContents instances. This is the main process equivalent of the existing webFrame API. More information about this new API can be found here, and in our documentation.
  • app API changes:
    • Added non-localized serviceName to 'child-process-gone' / app.getAppMetrics(). #25975
    • Added new app.runningUnderRosettaTranslation property to detect when running under rosetta on Apple silicon. #26444
    • Added exitCode to render-process-gone details (app & webContents). #27677
  • BrowserWindow API changes:
    • 添加BrowserWindow.isTabletMode() API。 #25209
    • Added resized (Windows/macOS) and moved (Windows) events to BrowserWindow. #26216
    • Added new system-context-menu event to allow preventing and overriding the system context menu. #25795
    • Added win.setTopBrowserView() so that BrowserViews can be raised. #27713
    • Added webPreferences.preferredSizeMode to allow sizing views according to their document's minimum size. #25874
  • contextBridge API changes:
    • Allowed ContextBridge exposeInMainWorld method to expose non-object APIs. #26834
  • display API changes:
    • Added displayFrequency property to the Display object to allow getting information about the refresh rate on Windows. #26472
  • extensions API changes:
    • Added support for some chrome.management APIs. #25098
  • MenuItem API changes:
    • Added support for showing macOS share menu. #25629
  • net API changes:
    • Added a new credentials option for net.request(). #25284
    • Added net.online for detecting whether there is currently internet connection. #21004
  • powerMonitor API changes:
    • 已添加 powerMonitor.onBatteryPower#26494
    • Added fast user switching event to powerMonitor on macOS. #25321
  • session API changes:
    • Added allowFileAccess option to ses.loadExtension() API. #27702
    • Added display-capture API for session.setPermissionRequestHandler. #27696
    • Added a disabledCipherSuites option to session.setSSLConfig. #25818
    • Added extension-loaded, extension-unloaded, and extension-ready events to session. #25385
    • Added session.setSSLConfig() to allow configuring SSL. #25461
    • Added support for explicitly specifying direct, auto_detect or system modes in session.setProxy(). #24937
    • Added Serial API support. #25237
    • Added APIs to enable/disable spell checker. #26276
  • shell API changes:
    • Added a new asynchronous shell.trashItem() API, replacing the synchronous shell.moveItemToTrash(). #25114
  • webContents API changes:
    • Added a small console hint to console to help debug renderer crashes. #25317
    • Added frame and webContents properties to the details object in webRequest handlers. #27334
    • Added webContents.forcefullyCrashRenderer() to forcefully terminate a renderer process to assist with recovering a hung renderer. #25580
    • Added setWindowOpenHandler API for renderer-created child windows, and deprecate new-window event. #24517
  • webFrame API changes:
    • Added spellcheck API to renderer. #25060

Removed/Deprecated Changes

The following APIs have been removed or are now deprecated:

  • 弃用 remote 模块。 它被 @electron/remote 代替。 #25293
  • Removed deprecated crashReporter APIs. #26709
  • Removed links to the Electron website from the default 'Help' menu in packaged apps. #25831

终止对 9.x.y 的支持

根据项目的支持政策,Electron 9.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。 暂定 13.0.0 时间表 展示了 Electron 13.0 开发生命周期中的关键日期。 Also, see our versioning document for more detailed information about versioning in Electron.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes doc.

Electron 11.0.0

· 阅读时间:约 4 分钟

Electron 11.0.0 已发布! 它包括升级到 Chromium 87, V8 8.7, 和 Node.js 12.18.3。 我们已经添加了对Apple silicon和一般改进的支持。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 11.0.0.0! 您可以通过 npm 安装electron@later 或者从我们的 发布网站 下载它。 新版本包括内容更新及问题修复,提供对Apple M1的硬件支持。

We can't wait to see what you build with them! Continue reading for details about this release, and please share any feedback you have!

重要变化

架构(Stack)更新

Highlight Features

有关新功能和变更的完整列表,请参阅 11.0.0 发布通知

重大更改

  • 移除实验性API: BrowserView.{fromId, fromWebContents, getAllViews}BrowserViewid属性. #23578

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

API 更改

  • Added app.getApplicationInfoForProtocol() API that returns detailed information about the app that handles a certain protocol. #24112
  • Added app.createThumbnailFromPath() API that returns a preview image of a file given its file path and a maximum thumbnail size. #24802
  • Added webContents.forcefullyCrashRenderer() to forcefully terminate a renderer process to assist with recovering a hung renderer. #25756

终止对 8.x.y 的支持

根据项目的支持政策,Electron 8.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 Although we are careful not to make promises about release dates, our plan is to release new major versions of Electron with new versions of those components approximately quarterly. 暂定 12.0.0 时间表 展示了 Electron 12.0 开发生命周期中的关键日期。 Also, see our versioning document for more detailed information about versioning in Electron.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes doc.

未来将弃用 remote 模块

我们已经着手移除Electron 9中的 remote 模块, 计划在Electron 14中完成。

要想知道有关移除计划的全部细节,请阅读并关注 这里

Final Step for Requiring Native Node Modules to be Context Aware or N-API (in Electron 12)

From Electron 6 onwards, we've been laying the groundwork to require native Node modules loaded in the renderer process to be either N-API or Context Aware. Enforcing this change allows for stronger security, faster performance, and reduced maintenance workload. The final step of this plan is to remove the ability to disable render process reuse in Electron 12.

要想知道其他细节或时间相关的问题,请阅读并关注 这里

Apple Silicon 芯片支持

· 阅读时间:约 5 分钟

随着苹果芯片将于今年晚些时候发布,您如何让Electron应用程序在新硬件上运行?


随着Electron 11.0.0-beta.1的发布,Electron团队现在正在编写在苹果计划于今年晚些时候发货的新苹果芯片上运行的Electron版本。 你可以通过npm install electron@beta或从官网来下载最新的Beta版本。

它是如何工作的?

从Electron 11开始,我们将为Intel Mac和Apple Silicon Mac发布不同的Electron版本。 在这个变化之前,我们已经发布了两个版本, darwin-x64mas-x64,后者是用于Mac App Store 兼容性的使用。 我们现在已发布另外两个版本 darwin-arm64mas-arm64,为上述版本的 Apple Silicon 版本。

我需要做什么?

您将需要发布两个版本的应用:一个版本用于 x64(Intel Mac),另一个版本用于arm64(Apple Silicon)。 好消息是 electron-packager, electron-rebuildelectron-forge 已经为 arm64 架构做好了支持。 只要您正在运行这些软件包的最新版本,您的应用就应该在将目标架构更新到 arm64 后正常工作。

将来, 我们将发布一个软件包,允许您将您的 arm64x64 应用“合并”到一个单一的通用二进制软件包, 但值得注意的是,这个二进制文件可能会 非常巨大 并且可能不适合给用户发布。

更新:此软件包现在可在 @electron/universal 上使用。 您可以使用它将两个以打包的 x64 和 arm64 应用程序合并为一个二进制程序。

潜在问题

原生模块

当您正在针对一个新的架构时,您需要更新几个依赖关系,这可能会导致构建问题。 下面包含某些依赖关系的最低版本以供您参考。

依赖项版本要求
Xcode>=12.2
node-gyp>=7.1
electron-rebuild>=1.12
electron-packager>=15.1

由于这些依赖版本要求,您可能不得不修复/更新某些原生模块。 值得注意的是,Xcode 升级将引入新版本的 macOS SDK。 这可能会导致您的原生模块构建失败。

如何测试它

目前,Apple Silicon 应用程序只在 Apple Silicon 硬件上运行,在撰写这篇博文时暂没有商业用途。 如果您有一个开发者过渡套件,您可以在那里测试您的应用程序。 否则,您将不得不等待Apple Silicon硬件的生产发布,以测试您的应用是否正常。

Rosetta 2怎么样?

Rosetta 2 是苹果最近一次对他们的 Rosetta 技术的迭代。 允许您在新的 arm64 Apple Silicon 硬件上运行 x64 Intel 应用。 虽然我们相信x64 Electron应用程序将在Rosetta 2下运行,但有一些重要的事情需要注意(以及您应该发布原生arm64二进制文件的原因)。

  • 您的应用的性能将明显下降。 Electron / V8 为 JavaScript 使用 JIT 编译,因为 Rosetta 工作的原理。 您实际上将运行两次JIT (一次在 V8 中,一次在 Rosetta)。
  • 您失去了如内存页面大小的增加这样的 Apple Silicon 新技术的好处。
  • 我们是否提到性能将显著 降级?

Community Discord Server and Hacktoberfest

· 阅读时间:约 3 分钟

Join us for community bonding and a month-long celebration of open-source.


Hacktoberfest and Discord banner

Electron Community Discord Launch

Electron’s Outreach Working Group is excited to announce the launch of our official community Discord server!

Why a new Discord server?

In its early days as the backbone of the Atom text editor, community discussion on the Electron framework occurred in a single channel in Atom’s Slack workspace. As time passed and the two projects were increasingly decoupled, the relevance of the Atom workspace to the Electron project decreased, and maintainer participation in the Slack channel declined in the same manner.

Up until now, we had still been redirecting our broader community to the Atom Slack workspace, even though we’ve had many reports from folks who have had trouble receiving invitations, and few of our core maintainers were frequenting the channel.

We’re setting up this shiny new server to be a central discussion hub for the community where you can get the latest news on all things Electron.

Get in here!

So far, the server’s membership consists of a few maintainers who have been working together to set it up, but we’re so excited to chat with you all! Come ask for help, keep up to date with Electron releases, or just hang out with other developers. We’ve got a handy invite for you that’ll give you access to the server!

Hacktoberfest 2020

作为一个大型和长期运行的开源项目,Electron如果没有其社区的所有 贡献就不会像现在这样成功。 从提交代码到错误报告到文档更改,还有更多。 That’s why we believe in the importance of participating in Hacktoberfest to usher in a wider community of developers of all skill levels into the project.

Odds and ends

This year, we don’t have a wider project to give you all to work on, but we’d like to focus on opportunities to contribute across the Electron JavaScript ecosystem.

Look out for issues tagged hacktoberfest across our various repositories, including the main electron/electron repository, the electron/electronjs.org website, electron/fiddle, and electron-userland/electron-forge!

P.S. If you're feeling particularly adventurous, we also have a backlog of issues marked with help wanted tags if you're looking for more of a challenge.

Stuck? Come chat with us!

Moreover, it’s also no coincidence that the grand opening of our Discord server coincides with the largest celebration of open-source software of the year. Check out the #hacktoberfest channel to ask for help on your Hacktoberfest PR. In case you missed it, here's the invite link again!

Electron 10.0.0

· 阅读时间:约 5 分钟

Electron 10.0.0 已发布! 它包括升级到 Chromium 85, V8 8.5, 和 Node.js 12.16。 我们添加了几个新的 API 集成和改进。 请阅读下文了解更多详情!


Electron 团队很高兴发布了 Electron 10.0.0.0! 您可以通过 npm 安装electron@later 或者从我们的 发布网站 下载它。 这次发布包含升级、修复和新功能。

在 Electron 10 发布版中,我们还修改了我们的版本说明。 To make it easier to tell what's brand new in Electron 10 and what may have changed between Electron 10 and past releases, we now also include changes that were introduced to Electron 10, but backported to previous releases. We hope this makes it easier to apps to find new features and bug fixes when upgrading Electron.

We can't wait to see what you build with them! Continue reading for details about this release, and please share any feedback you have!

重要变化

架构(Stack)更新

Highlight Features

  • Added contents.getBackgroundThrottling() method and contents.backgroundThrottling property. [#21036]
  • Exposed the desktopCapturer module in the main process. #23548
  • Can now check if a given session is persistent by calling the ses.isPersistent() API. #22622
  • Resolve network issues that prevented RTC calls from being connected due to network IP address changes and ICE. (Chromium issue 1113227). #24998

有关新功能和变更的完整列表,请参阅 10.0.0 发布通知

重大更改

  • Changed the default value of enableRemoteModule to false. #22091
    • This is part of our plans for deprecating the remote module and moving it to userland. You can read and follow this issue that details our reasons for this and includes a proposed timeline for deprecation.
  • Changed the default value of app.allowRendererProcessReuse to true. #22336 (Also in Electron 9)
    • This will prevent loading of non-context-aware native modules in renderer processes.
    • You can read and follow this issue that details our reasons for this and includes a proposed timeline for deprecation.
  • Fixed the positioning of window buttons on macOS when the OS locale is set to an RTL language (like Arabic or Hebrew). Frameless window apps may have to account for this change while styling their windows. #22016

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

API 更改

  • Session: Can now check if a given session is persistent by calling the ses.isPersistent() API. #22622
  • Contents: Added contents.getBackgroundThrottling() method and contents.backgroundThrottling property. #21036

Deprecated APIs

The following APIs are now deprecated or removed:

  • Removed the deprecated currentlyLoggingPath property of netLog. Additionally, netLog.stopLogging no longer returns the path to the recorded log. #22732
  • Deprecated uncompressed crash uploads in crashReporter. #23598

终止对 7.x.y 的支持

根据项目的支持政策,Electron 7.x.y 已经达到了支持的终点。 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。 暂定 11.0.0 时间表 展示了 Electron 11.0 开发生命周期中的关键日期。 Also, see our versioning document for more detailed information about versioning in Electron.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes doc.

Continued Work for Deprecation of remote Module (in Electron 11)

We started work to remove the remote module in Electron 9 and we're continuing plans to remove the remote module. In Electron 11, we plan to continue refactor work for implementing WeakRef as we have done in Electron 10. Please read and follow this issue for full plans and details for deprecation.

Final Step for Requiring Native Node Modules to be Context Aware or N-API (in Electron 12)

Edit: Originally, this blog post stated that we would disable renderer process reuse in Electron 11. Disabling renderer process reuse has now been pushed to Electron 12.

From Electron 6 onwards, we've been laying the groundwork to require native Node modules loaded in the renderer process to be either N-API or Context Aware. Enforcing this change allows for stronger security, faster performance, and reduced maintenance workload. The final step of this plan is to remove the ability to disable render process reuse in Electron 12. Read this issue for full details including the proposed timeline.

Electron becomes an OpenJS Foundation Impact Project

· 阅读时间:约 1 分钟

At OpenJS World this morning, we announced that Electron has officially graduated from the OpenJS Foundation's incubation program, and is now an OpenJS Foundation Impact Project.

Electron entered incubation in December of 2019, at the last OpenJS Foundation global conference in Montreal. We're excited to take a larger role in the JavaScript community as an Impact Project, and continue our partnership with the OpenJS Foundation.


Learning more

You can read up on the foundation, its mission, and its members on the OpenJSF website. The OpenJS Foundation is host to a number of open source JavaScript projects including jQuery, Node.js, and webpack. It's supported by 30 corporate and end-user members, including GoDaddy, Google, IBM, Intel, Joyent, and Microsoft.

Electron is an open–source framework for building cross-platform desktop applications with web technologies. To learn more about the humans behind Electron and how they work together, take a look at our Governance page.

To get started with Electron itself, take a peek at our documentation.

Google 文档之季

· 阅读时间:约 3 分钟

Electron is proud to be participating in the second edition of Google's Season of Docs initiative, which pairs mentors from open source organizations with technical writers to improve project documentation.


什么是文档之季?

文档之季标志

文档之季是一个为促进技术作者与开源社区间合作而生的计划。 开源软件维护者利用作家们的技术写作专家知识来改进其文档的结构和内容。同时,技术作家在导师指导下被介绍给开源社区。 在Google的 文档之季网站 上了解更多信息。

这是我们第一次参加这项计划,我们将会指导一位将与生态项目组合作的技术作家,以大规模重塑我们的记录文档。 您可以在这里了解更多关于整个工程的时间线

我该如何参加?

您是否有兴趣作为技术撰稿人与我们合作? 首先,请了解谷歌今年的技术写作指南 。并查看我们编写的两个 项目构想草案

为了被选为 Electron 的 Season of Docs 技术撰稿人,参与者需要在 6 月 8 日至 7 月 9 日的技术撰稿人申请阶段在 Google Season of Docs 网站上申请。

您的申请应包括一份提案,这是一份书面文件,详细描述了您计划在3个月内在Electron文档上实现的目标。 该提案可以在我们的 “项目构想” (Project Idea) 文档中提到的起点之一上进行开发,也可以是全新的东西。 不知道从哪里开始? 您可以查看去年已接受的提案列表,以获取灵感。

除了提案之外,我们还将研究您作为技术作家的背景。 请附上您的简历副本,重点是相关的写作经验,以及技术写作样本(这些样本可能是现有的文档,教程,博客文章等)。

如果您想讨论项目提案,请在 season-of-docs@electronjs.org 上给我们发送电子邮件,我们可以从那里聊天!

引用

Electron 9.0.0

· 阅读时间:约 5 分钟

Electron 9.0.0 已发布! 它包括升级到 Chromium 83, V8 8.3, 和 Node.js 12.14。 We've added several new API integrations for our spellchecker feature, enabled PDF viewer, and much more!


Electron 团队很高兴发布了 Electron 9.0.0.0! 您可以通过 npm 安装electron@later 或者从我们的 发布网站 下载它。 这次发布包含升级、修复和新功能。 We can't wait to see what you build with them! Continue reading for details about this release, and please share any feedback you have!

重要变化

架构(Stack)更新

Highlight Features

  • Multiple improvements to the spellchecker feature. See more details in #22128 and #22368.
  • Improved window events handler efficiency on Linux. #23260.
  • Enable PDF viewer. #22131.

有关新功能和变更的完整列表,请参阅 9.0.0 发布通知

重大更改

  • Deprecation warning when using remote without enableRemoteModule: true. #21546
    • This is the first step in our plans for deprecating the remote module and moving it to userland. You can read and follow this issue that details our reasons for this and includes a proposed timeline for deprecation.
  • Set app.enableRendererProcessReuse to true by default. #22336
    • This is continued work for a future requirement that native Node modules loaded in the renderer process be either N-API or Context Aware. Full info and proposed timeline is detailed in this issue.
  • Sending non-JavaScript objects over IPC now throws an exception. #21560
    • This behavior was depreciated in Electron 8.0. In Electron 9.0, the old serialization algorithm has been removed, and sending such non-serializable objects will now throw an "object could not be cloned" error.

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

API 更改

  • shell API changes:
    • The shell.openItem API has been replaced with an asynchronous shell.openPath API. proposal
  • sessionAPI changes:
    • Added session.listWordsFromSpellCheckerDictionary API to list custom words in the dictionary. #22128
    • Added session.removeWordFromSpellCheckerDictionary API to remove custom words in the dictionary. #22368
    • Added session.serviceWorkerContext API to access basic service worker info and receive console logs from service workers. #22313
  • app API changes:
    • Added a new force parameter to app.focus() on macOS to allow apps to forcefully take focus. #23447
  • BrowserWindow API changes:
    • Added support for property access to some getter/setter pairs on BrowserWindow. #23208

Deprecated APIs

The following APIs are now deprecated or removed:

  • shell.openItem API is now depreciated, and replaced with an asynchronous shell.openPath API.
  • <webview>.getWebContents, which was deprecated in Electron 8.0, is now removed.
  • webFrame.setLayoutZoomLevelLimits, which was deprecated in Electron 8.0, is now removed.

终止对 6.x.y 的支持

Electron 6.x.y has reached end-of-support as per the project's support policy. 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。 暂定 10.0.0 时间表 展示了 Electron 10.0 开发生命周期中的关键日期。 Also, see our versioning document for more detailed information about versioning in Electron.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes doc.

Change the default of contextIsolation from false to true (Starting in Electron 10)

Without contextIsolation, any code running in a renderer process can quite easily reach into Electron internals or an app's preload script. That code can then perform privileged actions that Electron wants to keep restricted.

Changing this default improves the default security of Electron apps, so that apps will need to deliberately opt in to the insecure behaviour. Electron will depreciate the current default of contextIsolation in Electron 10.0, and change to the new default (true) in Electron 12.0.

For more information on contextIsolation, how to enable it easily and it's security benefits please see our dedicated Context Isolation Document.

即将发布的 Electron 版本

· 阅读时间:约 2 分钟

Electron 正在暂停更新大型版本


发生了什么?

我们的 大型更新时间表 与Chromium 同步更新,Chromium项目最近由于调整工作时间表已决定 暂停更新。 这意味着,在Chromium经过改变的更新节奏期间,Electron也会暂时性地暂停重大更新。

我们认为,我们的最佳选择是沿着Chromium的脚步走下去, 因此,在过渡时期,Electron团队将转为全天候处理错误、安全、性能和稳定性问题。

我们希望确保我们的维护者和消费者的福利在这个时候都得到优先考虑。 因此,我们欢迎你们的反馈,并期待着恢复我们的正常发布时间表。

欲了解更多更新信息,请关注我们的 Twitter

编辑(2020-03-30):Election 9 稳定版将针对Chromium M83,并于2020年5月19日发布。 这针对 Chromium的声明 关于跳过M82稳定日期并调整M83稳定版发布日期。

Electron 8.0.0

· 阅读时间:约 6 分钟

Electron 8.0.0 已发布! 它包括升级到 Chromium 80, V8 8.0, 和 Node.js 12.13.0。 We've added Chrome's built-in spellchecker, and much more!


Electron 团队很高兴发布了 Electron 8.0.0.0! 您可以通过 npm 安装electron@later 或者从我们的 发布网站 下载它。 这次发布包含升级、修复和新功能。 We can't wait to see what you build with them! Continue reading for details about this release, and please share any feedback you have!

重要变化

架构(Stack)更新

Highlight Features

  • Implemented usage of Chrome's built-in spellchecker feature. See more details in #20692 and #21266.
  • IPC communication now uses v8's Structured Clone Algorithm. This is faster, more featureful, and less surprising than the existing logic, and brings about a 2x performance boost for large buffers and complex objects. Latency for small messages is not significantly affected. See more details in #20214.

有关新功能和变更的完整列表,请参阅 8.0.0 发布通知

重大更改

  • Show module name in deprecation warning for context-aware modules. #21952
    • This is continued work for a future requirement that native Node modules loaded in the renderer process be either N-API or Context Aware. Full info and proposed timeline is detailed in this issue.
  • Values sent over IPC are now serialized with Structured Clone Algorithm. #20214
  • Offscreen Rendering is currently disabled due to lack of a maintainer to work on this feature. It broke during the Chromium upgrade and was subsequently disabled. #20772

有关这些和未来变化的更多信息可在 计划的破坏性变化 页面找到。

API 更改

  • app API changes:
    • 已添加 app.getApplicationNameForProtocol(url)#20399
    • Added app.showAboutPanel() and app.setAboutPanelOptions(options) support on Windows. #19420
  • BrowserWindow API changes:
    • Updated docs to note that BrowserWindow options hasShadow is available on all platforms #20038
    • Added trafficLightPosition option to BrowserWindow options to allow custom positioning for traffic light buttons. #21781
    • Added accessibleTitle option to BrowserWindow for setting the accessible window title #19698
    • BrowserWindow.fromWebContents() can now return null #19983
    • Added BrowserWindow.getMediaSourceId() and BrowserWindow.moveAbove(mediaSourceId). #18926
    • Added support for will-move event on macOS. #19641
  • Documented previously undocumented crashReporter.getCrashesDirectory(). #20417
  • dialog API changes:
    • Added dontAddToRecent property to dialog.showOpenDialog and dialog.showOpenDialogSync to prevent documents from being added to recent documents on Windows in open dialogs. #19669
    • Added property customization to dialog.showSaveDialog and dialog.showSaveDialogSync. #19672
  • Notification API changes:
    • Added timeoutType option to allow Linux/Windows users to set the type of notification timeout. #20153
    • Added urgency option to set urgency on Linux notifications. #20152
  • session API changes:
    • Updated documentation on session.setProxy(config) and session.setCertificateVerifyProc(proc) to note optional options. #19604
    • Added session.downloadURL(url) to allow to triggering downloads without a BrowserWindow. #19889
    • Added support for HTTP preconnect resource hints via session.preconnect(options) and the preconnect event. #18671
    • Added session.addWordToSpellCheckerDictionary to allow custom words in the dictionary #21297
  • Added option to shell.moveItemToTrash(fullPath[, deleteOnFail]) on macOS to specify what happens when moveItemToTrash fails. #19700
  • systemPreferences API changes:
    • Updated systemPreferences.getColor(color) documentation for macOS. #20611
    • Added screen media type to systemPreferences.getMediaAccessStatus(). #20764
  • Added nativeTheme.themeSource to allow apps to override Chromium and the OS's theme choice. #19960
  • TouchBar API changes:
    • Added accessibilityLabel property to TouchBarButton and TouchBarLabel to improve TouchBarButton/TouchBarLabel accessibility. #20454
    • Updated TouchBar related documentation #19444
  • tray API changes:
    • Added new options to tray.displayBalloon(): iconType, largeIcon, noSound and respectQuietTime. #19544
    • Added tray.removeBalloon(), which removes an already displayed balloon notification. #19547
    • Added tray.focus(), which returns focus to the taskbar notification area. feat: add tray.focus() #19548
  • webContents API changes:
    • Added contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]) to expose executeJavaScriptInIsolatedWorld on the webContents API. #21190
    • Added methods to capture a hidden webContents. #21679
    • Added options to webContents.print([options], [callback]) to enable customization of print page headers and footers. #19688
    • Added ability to inspect specific shared workers via webContents.getAllSharedWorkers() and webContents.inspectSharedWorkerById(workerId). #20389
    • Added the support of fitToPageEnabled and scaleFactor options in WebContents.printToPDF(). #20436
  • Updated webview.printToPDF documentation to indicate return type is now Uint8Array. #20505

Deprecated APIs

The following APIs are now deprecated:

  • Deprecated the nonfunctional visibleOnFullScreen option within BrowserWindow.setVisibleOnAllWorkspaces prior to its removal in the next major release version. #21732
  • Deprecated alternate-selected-control-text on systemPreferences.getColor(color) for macOS. #20611
  • Deprecated setLayoutZoomLevelLimits on webContents, webFrame, and <webview> Tag because Chromium removed this capability. #21296
  • The default value of false for app.allowRendererProcessReuse is now deprecated. #21287
  • Deprecated <webview>.getWebContents() as it depends on the remote module. #20726

终止对 5.x.y 的支持

Electron 5.x.y has reached end-of-support as per the project's support policy. 我们鼓励开发者将应用程序升级到更新的 Electron 版本。

应用反馈项目

We continue to use our App Feedback Program for testing. Projects who participate in this program test Electron betas on their apps; and in return, the new bugs they find are prioritized for the stable release. If you'd like to participate or learn more, check out our blog post about the program.

接下来

在短期内,您可以期待团队继续专注于跟上构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。 尽管我们谨慎地避免对发布日期做出承诺,但我们的计划是大约每季度发布一次 Electron 的新主要版本以及这些组件的新版本。 暂定 9.0.0 时间表 展示了 Electron 9 开发生命周期中的关键日期。 Also, see our versioning document for more detailed information about versioning in Electron.

For information on planned breaking changes in upcoming versions of Electron, see our Planned Breaking Changes doc.

Deprecation of remote Module (Starting in Electron 9)

Due to serious security liabilities, we are beginning plans to deprecate the remote module starting in Electron 9. You can read and follow this issue that details our reasons for this and includes a proposed timeline for deprecation.