跳到主要内容

社区 Discord 服务器与 Hacktoberfest

·阅读 3 分钟

加入我们,参与社区交流,并庆祝开源活动持续一个月。


Hacktoberfest and Discord banner

Electron 社区 Discord 启动

Electron 的 外展工作组 很高兴宣布我们的官方社区 Discord 服务器启动!

为什么是新的 Discord 服务器?

在早期作为 Atom 文本编辑器 的基础时,关于 Electron 框架的社区讨论发生在 Atom Slack 工作区的一个单一频道中。随着时间的推移,这两个项目越来越解耦,Atom 工作区与 Electron 项目的相关性降低,维护者在 Slack 频道中的参与度也以同样的方式下降。

直到现在,我们仍然将更广泛的社区重定向到 Atom Slack 工作区,尽管我们收到许多报告称人们在接收邀请时遇到困难,而且我们核心维护者中很少有人经常使用该频道。

我们正在设置这个崭新的服务器,使其成为社区的中心讨论中心,在这里您可以获取关于 Electron 的所有最新消息。

快来加入吧!

到目前为止,服务器的成员由一些一直合作设置它的维护者组成,但我们很高兴与大家聊天!快来寻求帮助、了解 Electron 最新版本,或者只是与其他开发者交流。我们为您准备了一个方便的邀请链接,让您可以访问服务器!

Hacktoberfest 2020

作为一个大型且长期运行的开源项目,如果没有社区的所有贡献,从代码提交到错误报告再到文档修改等等,Electron 不会取得如此巨大的成功。这就是为什么我们相信参与 Hacktoberfest 的重要性,以引入更广泛的、各种技能水平的开发者社区参与到项目中。

其他事项

今年,我们没有一个更广泛的项目供大家参与,但我们希望专注于 Electron JavaScript 生态系统中可以贡献的机会。

请关注我们各个仓库中标有 hacktoberfest 标签的问题,包括主要的 electron/electron 仓库、electron/electronjs.org 网站、electron/fiddleelectron-userland/electron-forge

附注:如果您感觉特别有冒险精神,如果您正在寻找更大的挑战,我们还有一个积压的、标有 help wanted 标签的问题列表。

卡住了?来和我们聊聊吧!

此外,我们的 Discord 服务器盛大开放恰逢一年一度最大的开源软件庆祝活动,这绝非巧合。请查看 #hacktoberfest 频道,以获取关于您的 Hacktoberfest PR 的帮助。万一您错过了,这里再次提供邀请链接

Electron 10.0.0

·阅读 5 分钟

Electron 10.0.0 已发布!它包含了对 Chromium 85、V8 8.5 和 Node.js 12.16 的升级。我们增加了几个新的 API 集成和改进。阅读下方以获取更多详情!


Electron 团队很高兴宣布 Electron 10.0.0 发布!您可以通过 npm 使用 npm install electron@latest 安装,或者从我们的发布网站下载。此版本包含了大量升级、修复和新功能。

在 Electron 10 版本中,我们还对发布说明进行了更改。为了更容易区分 Electron 10 中的全新内容以及 Electron 10 与过去版本之间可能已更改的内容,我们现在还包含了在 Electron 10 中引入但已回port到先前版本中的更改。我们希望这能让应用在升级 Electron 时更容易找到新功能和错误修复。

我们迫不及待地想看到您用它们构建什么!继续阅读以了解此版本的详细信息,如果您有任何反馈,请分享给我们!

重要变更

技术栈变更

重点功能

  • 添加了 contents.getBackgroundThrottling() 方法和 contents.backgroundThrottling 属性。 [#21036]
  • 在主进程中暴露了 desktopCapturer 模块。#23548
  • 现在可以通过调用 ses.isPersistent() API 来检查给定的 session 是否持久。#22622
  • 解决了由于网络 IP 地址更改和 ICE 导致 RTC 调用无法连接的网络问题。(Chromium issue 1113227)。#24998

有关新功能和更改的完整列表,请参阅10.0.0 发布说明

重大变更

  • enableRemoteModule 的默认值更改为 false#22091
    • 这是我们弃用 remote 模块并将其移至 userland 的计划的一部分。您可以阅读并关注此问题,其中详细说明了我们这样做的原因以及拟定的弃用时间表。
  • app.allowRendererProcessReuse 的默认值更改为 true#22336 (也在Electron 9 中)
    • 这将阻止在渲染器进程中加载非上下文感知(non-context-aware)的原生模块。
    • 您可以阅读并关注此问题,其中详细说明了我们这样做的原因以及拟定的弃用时间表。
  • 修复了 macOS 上当操作系统区域设置为 RTL 语言(如阿拉伯语或希伯来语)时窗口按钮的位置问题。无框窗口应用在设计样式时可能需要考虑此更改。#22016

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

API 变更

  • Session:现在可以通过调用 ses.isPersistent() API 来检查给定的 session 是否持久。#22622
  • Contents:添加了 contents.getBackgroundThrottling() 方法和 contents.backgroundThrottling 属性。#21036

已弃用的 API

以下 API 现已弃用或移除

  • 移除了已弃用的 netLogcurrentlyLoggingPath 属性。此外,netLog.stopLogging 不再返回记录日志的路径。#22732
  • 弃用了 crashReporter 中未压缩的崩溃上传。#23598

结束支持 7.x.y

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

下一步

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

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

继续推进 remote 模块弃用工作 (Electron 11)

我们从 Electron 9 开始移除 remote 模块的工作,并且正在继续移除 remote 模块的计划。在 Electron 11 中,我们计划像在 Electron 10 中一样,继续重构工作以实现 WeakRef。请阅读并关注此问题,以获取弃用的完整计划和详细信息。

要求原生 Node 模块为上下文感知(Context Aware)或 N-API 的最后一步 (Electron 12)

编辑:最初,这篇博客文章指出我们将在 Electron 11 中禁用渲染器进程重用。现在,禁用渲染器进程重用已被推迟到 Electron 12。

从 Electron 6 开始,我们一直在为要求在渲染器进程中加载的原生 Node 模块必须是N-API上下文感知(Context Aware)奠定基础。强制执行此更改可以增强安全性、提高性能并减少维护工作量。此计划的最后一步是在 Electron 12 中移除禁用渲染器进程重用的能力。阅读此问题以获取包括拟定时间表在内的完整详细信息。

Electron 成为 OpenJS Foundation 影响力项目

·阅读 1 分钟

今天上午在 OpenJS World 上,我们宣布 Electron 已正式从OpenJS Foundation 的孵化项目毕业,现已成为 OpenJS Foundation 影响力项目。

Electron 于 2019 年 12 月进入孵化阶段,在蒙特利尔举行的上一届 OpenJS Foundation 全球会议上。我们很高兴作为一个影响力项目在 JavaScript 社区中发挥更大的作用,并继续与 OpenJS Foundation 保持合作。


了解更多

您可以在OpenJSF 网站上阅读有关该基金会、其使命和成员的信息。OpenJS Foundation 托管了许多开源 JavaScript 项目,包括 jQuery、Node.js 和 webpack。它得到了 30 家企业和最终用户成员的支持,包括 GoDaddy、Google、IBM、Intel、Joyent 和 Microsoft。

Electron 是一个开源框架,用于使用 Web 技术构建跨平台桌面应用程序。要了解更多关于 Electron 背后的开发者以及他们如何协同工作的信息,请查看我们的治理页面

要开始使用 Electron 本身,请查看我们的文档

Google 文档季节

·阅读 2 分钟

Electron 很荣幸参与 Google 的第二届文档季节(Season of Docs)活动,该活动将开源组织的导师与技术文档作者配对,以改进项目文档。


什么是文档季节?

Season of Docs logo

文档季节是一个促进技术文档作者与开源社区之间协作的项目,旨在使双方受益。开源维护者利用文档作者的技术写作专业知识来改进其文档的结构和内容,而技术文档作者则在导师的指导下被引入开源社区。在 Google 的文档季节网站上了解更多信息。

作为我们首次参与该项目,我们将指导一名技术文档作者,他将与 Electron 的生态系统工作组一同工作,以重塑我们文档的很大一部分内容。您可以在此处了解有关整个项目时间表的更多信息。

如何报名?

您有兴趣作为技术文档作者与我们合作吗?首先,请熟悉 Google 为今年项目准备的技术文档作者指南,并查看我们准备的两个项目创意草案

要被选为 Electron 的文档季节技术文档作者,候选人需要在 6 月 8 日至 7 月 9 日期间的技术文档作者申请阶段在 Google 文档季节网站上提交申请。

您的申请应包含一份提案,这是一份书面文件,详细描述您计划在 3 个月内对 Electron 文档做出哪些成果。此提案可以基于我们项目创意文档中提到的一个起点进行扩展,也可以是一个全新的想法。不知道从何入手?您可以查看去年已接受的提案列表来获取灵感。

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

如果您想讨论项目提案,请发送电子邮件至 season-of-docs@electronjs.org,我们可以从那里开始交流!

参考资料

Electron 9.0.0

·阅读 4 分钟

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 发布说明

重大变更

  • 在使用 remote 而未设置 enableRemoteModule: true 时显示弃用警告。#21546
    • 这是我们弃用 remote 模块并将其移至 userland 的计划的第一步。您可以阅读并关注此问题,其中详细说明了我们这样做的原因以及拟定的弃用时间表。
  • 默认将 app.enableRendererProcessReuse 设置为 true。#22336
  • 现在通过 IPC 发送非 JavaScript 对象会抛出异常。#21560
    • 此行为在 Electron 8.0 中已弃用。在 Electron 9.0 中,旧的序列化算法已被移除,发送此类不可序列化对象现在将抛出“无法克隆对象”错误。

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

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、如何轻松启用它及其安全优势的更多信息,请参阅我们的专用上下文隔离文档

即将发布的 Electron 版本

·阅读 1 分钟

Electron 暂时暂停主要版本发布


发生了什么?

我们的主要版本发布节奏与 Chromium 保持同步,而 Chromium 项目最近决定由于工作计划调整而暂停其发布。这意味着在 Chromium 调整发布节奏期间,Electron 也将暂时暂停新的主要版本发布。

我们认为最好的选择是效仿 Chromium 的做法,因此在此期间,Electron 团队将把全部精力放在错误修复、安全性、性能和稳定性上。

我们希望确保在此期间,我们的维护者和用户的福祉都得到优先考虑,因此我们欢迎您的反馈,并期待恢复正常的发布计划。

要获取更多更新,请关注我们的Twitter 账号

编辑 (2020-03-30):Electron 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 的升级。我们增加了 Chrome 内置的拼写检查器,等等!


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

重要变更

技术栈变更

重点功能

  • 实现了 Chrome 内置拼写检查器功能的使用。在 #20692#21266 中查看更多详情。
  • IPC 通信现在使用 v8 的结构化克隆算法 (Structured Clone Algorithm)。这比现有逻辑更快、功能更丰富、更不易出错,对于大型缓冲区和复杂对象,性能提升了两倍。对于小消息,延迟没有受到显著影响。在 #20214 中查看更多详情。

有关新功能和更改的完整列表,请参阅8.0.0 发布说明

重大变更

  • 在上下文感知模块的弃用警告中显示模块名称。#21952
  • 现在通过 IPC 发送的值使用结构化克隆算法序列化。#20214
  • 由于缺乏维护者负责此功能,离屏渲染(Offscreen Rendering)目前已禁用。它在 Chromium 升级期间损坏并随后被禁用。#20772

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

API 变更

  • app API 变更
    • 添加了 app.getApplicationNameForProtocol(url)#20399
    • 添加了对 Windows 上 app.showAboutPanel()app.setAboutPanelOptions(options) 的支持。#19420
  • BrowserWindow API 变更
    • 更新了文档,指出 BrowserWindow 选项 hasShadow 在所有平台上都可用。#20038
    • 向 BrowserWindow 选项添加了 trafficLightPosition 选项,允许自定义交通灯按钮的位置。#21781
    • 为 BrowserWindow 添加了 accessibleTitle 选项,用于设置可访问的窗口标题。#19698
    • BrowserWindow.fromWebContents() 现在可以返回 null。#19983
    • 新增了 BrowserWindow.getMediaSourceId()BrowserWindow.moveAbove(mediaSourceId)#18926
    • 新增了对 macOS 上 will-move 事件的支持。 #19641
  • 补充了之前未记录的 crashReporter.getCrashesDirectory() 文档。 #20417
  • dialog API 变更
    • dialog.showOpenDialogdialog.showOpenDialogSync 添加了 dontAddToRecent 属性,以防止在 Windows 的打开对话框中将文档添加到最近使用的文档列表。 #19669
    • dialog.showSaveDialogdialog.showSaveDialogSync 添加了属性自定义。 #19672
  • Notification API 变更
    • 新增 timeoutType 选项,允许 Linux/Windows 用户设置通知超时类型。 #20153
    • 新增 urgency 选项,用于设置 Linux 通知紧急程度。 #20152
  • session API 变更
    • 更新了 session.setProxy(config)session.setCertificateVerifyProc(proc) 的文档,以说明可选参数。 #19604
    • 新增 session.downloadURL(url),允许在没有 BrowserWindow 的情况下触发下载。 #19889
    • 通过 session.preconnect(options)preconnect 事件增加了对 HTTP 预连接资源提示的支持。 #18671
    • 新增 session.addWordToSpellCheckerDictionary,允许在词典中添加自定义词语 #21297
  • 在 macOS 上为 shell.moveItemToTrash(fullPath[, deleteOnFail]) 添加了选项,用于指定 moveItemToTrash 失败时发生的情况。 #19700
  • systemPreferences API 变更
    • 更新了 macOS 上 systemPreferences.getColor(color) 的文档。 #20611
    • systemPreferences.getMediaAccessStatus() 添加了 screen 媒体类型。 #20764
  • 新增 nativeTheme.themeSource,允许应用覆盖 Chromium 和操作系统的主题选择。 #19960
  • TouchBar API 变更
    • 新增 accessibilityLabel 属性到 TouchBarButtonTouchBarLabel,以改进 TouchBarButton/TouchBarLabel 的可访问性。 #20454
    • 更新了与 TouchBar 相关的文档 #19444
  • tray API 变更
    • tray.displayBalloon() 添加了新选项:iconTypelargeIconnoSoundrespectQuietTime#19544
    • 新增 tray.removeBalloon(),用于移除已显示的气球通知。 #19547
    • 新增 tray.focus(),用于将焦点返回到任务栏通知区域。 功能:添加 tray.focus() #19548
  • webContents API 变更
    • 新增 contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture]),在 webContents API 上公开 executeJavaScriptInIsolatedWorld。 #21190
    • 新增捕获隐藏 webContents 的方法。 #21679
    • webContents.print([options], [callback]) 添加了选项,以实现打印页面页眉和页脚的自定义。 #19688
    • 新增通过 webContents.getAllSharedWorkers()webContents.inspectSharedWorkerById(workerId) 检查特定共享工作进程的能力。 #20389
    • 新增对 WebContents.printToPDF() 中 fitToPageEnabledscaleFactor 选项的支持。 #20436
  • 更新了 webview.printToPDF 文档,表明返回类型现为 Uint8Array。 #20505

已弃用的 API

以下 API 现已弃用

  • 在下一主要版本中移除之前,弃用了 BrowserWindow.setVisibleOnAllWorkspaces 中非功能的 visibleOnFullScreen 选项。 #21732
  • 在 macOS 上弃用了 systemPreferences.getColor(color)alternate-selected-control-text#20611
  • 弃用了 webContentswebFrame<webview> Tag 上的 setLayoutZoomLevelLimits,因为 Chromium 移除了此功能。 #21296
  • app.allowRendererProcessReuse 的默认值 false 现已弃用。 #21287
  • 弃用了 <webview>.getWebContents(),因为它依赖于 remote 模块。 #20726

结束支持 5.x.y

根据项目支持政策,Electron 5.x.y 已结束支持。建议开发者和应用程序升级到更新版本的 Electron。

应用反馈计划

我们继续使用应用反馈计划进行测试。参与该计划的项目在其应用上测试 Electron 测试版;作为回报,他们发现的新 Bug 将优先处理,以确保稳定版本的发布。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章。

下一步

短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。尽管我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布新的 Electron 主要版本以及这些组件的新版本。Electron 9 开发生命周期的关键日期已在暂定的 9.0.0 发布时间表中列出。此外,有关 Electron 版本控制的详细信息,请参阅我们的版本控制文档。

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

弃用 remote 模块 (从 Electron 9 开始)

由于严重的安全隐患,我们正开始计划从 Electron 9 开始弃用 remote 模块。您可以阅读并关注此问题,其中详细说明了我们的原因,并包括了建议的弃用时间表。

Electron 加入 OpenJS Foundation

·阅读 2 分钟

在蒙特利尔举行的 Node+JS Interactive 大会上,OpenJS Foundation 宣布接受 Electron 进入基金会的孵化项目。基金会致力于通过提供中立的组织来托管和支持项目,以及协同资助有益于整个社区的活动,从而支持 JavaScript 生态系统和 Web 技术的健康发展。

OpenJS Foundation 托管了许多开源 JavaScript 项目,包括 jQuery、Node.js 和 webpack。它由 30 家企业和终端用户成员支持,包括 GoDaddy、Google、IBM、Intel、Joyent 和 Microsoft。Electron 是一个开源框架,用于使用 Web 技术构建跨平台桌面应用。

这对 Electron 来说是一个令人兴奋的举动,我们认为这是作为开源项目发展迈出的下一步。


这对开发者意味着什么

Electron 加入 OpenJS Foundation 并不会改变 Electron 的构建、发布或使用方式,也不会直接影响使用 Electron 构建应用的开发者。尽管 Electron 最初于 2013 年在 GitHub 创建,但目前由许多组织和个人维护。2019 年,Electron 完善了其治理结构,并投入大量精力规范影响整个项目的决策制定方式。我们相信,有多个组织和开发者对 Electron 进行投入和协作,会使项目更加强大。

将 Electron 从单一企业实体所有权中提升出来,并将其移入专注于支持 Web 和 JavaScript 生态系统的中立基金会,是作为开源项目成熟后的自然下一步。

了解更多

您可以在 OpenJSF 网站上了解该基金会、其使命和成员。有关 Electron 被 OpenJSF 孵化项目接受的更多信息和引文,请查看官方新闻稿。要了解 Electron 背后的贡献者以及他们如何协作,请查看我们的治理页面

要开始使用 Electron 本身,请查看我们的文档

Chromium WebAudio 漏洞修复 (CVE-2019-13720)

·阅读 1 分钟

Chrome 中发现了一个严重漏洞,影响所有基于 Chromium 的软件,包括 Electron。

此漏洞已分配 CVE-2019-13720。您可以在Chrome 博客文章中阅读更多内容。

请注意,Chrome 有关于此漏洞正在野外被利用的报告,因此强烈建议您尽快升级 Electron。


范围

这会影响任何可能运行第三方或不受信任的 JavaScript 的 Electron 应用。

缓解措施

受影响的应用应升级到已打补丁的 Electron 版本。

我们发布了包含此漏洞修复程序的新版 Electron

在公告发布之前,Electron 7.0.1 已自动包含上游的修复。Electron 8 同样不受影响。该漏洞在 Electron 5 中不存在,因此该版本也不受影响。

更多信息

此漏洞由 Kaspersky Labs 的 Anton Ivanov 和 Alexey Kulaev 发现并报告给了 Chrome 团队。Chrome 博客文章在此处。

要了解有关确保 Electron 应用安全的最佳实践,请参阅我们的安全教程

如果您想报告 Electron 中的漏洞,请发送电子邮件至 security@electronjs.org

Electron 7.0.0

·阅读 3 分钟

Electron 7.0.0 已发布! 它包含了对 Chromium 78、V8 7.8 和 Node.js 12.8.1 的升级。我们新增了 Windows on Arm 64 版本、更快的 IPC 方法、新的 nativeTheme API 等等!


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

重要变更

  • 堆栈升级

    堆栈Electron 6 中的版本Electron 7 中的版本新增功能
    Chromium76.0.3809.14678.0.3905.177, 78
    V87.67.87.7, 7.8
    Node.js12.4.012.8.112.5, 12.6, 12.7, 12.8, 12.8.1
  • 新增 Windows on Arm (64 位) 版本。 #18591, #20112

  • 新增 ipcRenderer.invoke()ipcMain.handle(),用于异步请求/响应式 IPC。强烈推荐使用它们而不是 remote 模块。更多信息请参阅这篇“Electron 的‘remote’模块的危害”博客文章。 #18449

  • 新增 nativeTheme API,用于读取和响应操作系统主题和颜色方案的变化。 #19758, #20486

  • 切换到新的 TypeScript 定义生成器。生成的定义更精确;如果您的 TypeScript 构建失败,这很可能是原因。 #18103

有关更多变更列表,请参阅 7.0.0 发布说明

重大变更

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

  • 移除已弃用的 API
    • 现在使用 Promises 的函数的基于回调的版本。 #17907
    • Tray.setHighlightMode() (macOS)。 #18981
    • app.enableMixedSandbox() #17894
    • app.getApplicationMenu(),
    • app.setApplicationMenu(),
    • powerMonitor.querySystemIdleState(),
    • powerMonitor.querySystemIdleTime(),
    • webFrame.setIsolatedWorldContentSecurityPolicy(),
    • webFrame.setIsolatedWorldHumanReadableName(),
    • webFrame.setIsolatedWorldSecurityOrigin() #18159
  • Session.clearAuthCache() 不再允许过滤被清除的缓存条目。 #17970
  • macOS 上的原生接口 (菜单、对话框等) 现在自动匹配用户机器上的深色模式设置。 #19226
  • 更新了 electron 模块,使用 @electron/get。最低支持的 node 版本现为 Node 8。 #18413
  • 文件 electron.asar 已不再存在。任何依赖于其存在的打包脚本都应更新。 #18577

结束支持 4.x.y

根据项目支持政策,Electron 4.x.y 已结束支持。建议开发者和应用程序升级到更新版本的 Electron。

应用反馈计划

我们继续使用应用反馈计划进行测试。参与该计划的项目在其应用上测试 Electron 测试版;作为回报,他们发现的新 Bug 将优先处理,以确保稳定版本的发布。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章。

下一步

短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。尽管我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布新的 Electron 主要版本以及这些组件的新版本。Electron 8 开发生命周期的关键日期已在暂定的 8.0.0 发布时间表中列出。此外,有关 Electron 版本控制的详细信息,请参阅我们的版本控制文档。

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