跳至主要内容

Apple Silicon 支持

·3 分钟阅读

随着 Apple Silicon 硬件将于今年晚些时候发布,您在新的硬件上运行 Electron 应用程序的路径是什么?


随着 Electron 11.0.0-beta.1 的发布,Electron 团队现在发布了在 Apple 计划于今年晚些时候发布的新 Apple Silicon 硬件上运行的 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-packagerelectron-rebuildelectron-forge 已经支持以 arm64 架构为目标。只要您运行的是这些软件包的最新版本,一旦您将目标架构更新为 arm64,您的应用程序就应该可以完美运行。

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

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

潜在问题

原生模块

由于您以新架构为目标,因此您需要更新几个依赖项,这可能会导致构建问题。下面包含某些依赖项的最低版本以供您参考。

依赖项版本要求
Xcode>=12.2.0
node-gyp>=7.1.0
electron-rebuild>=1.12.0
electron-packager>=15.1.0

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

如何测试?

目前,Apple Silicon 应用程序只能在 Apple Silicon 硬件上运行,但在撰写此博客文章时,该硬件尚未公开发售。如果您有 开发者过渡套件,您可以在其上测试您的应用程序。否则,您必须等待生产 Apple Silicon 硬件发布后才能测试您的应用程序是否有效。

Rosetta 2 怎么样?

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

  • 您应用程序的性能将大大降低。Electron / V8 使用 JIT 编译 JavaScript,并且由于 Rosetta 的工作方式,您将有效地运行两次 JIT(一次在 V8 中,一次在 Rosetta 中)。
  • 您失去了 Apple Silicon 中新技术的好处,例如增加的内存页面大小。
  • 我们有没有提到性能将 *显著* 降低?

社区 Discord 服务器和 Hacktoberfest

·3 分钟阅读

加入我们的社区联谊活动和为期一个月的开源庆祝活动。


Hacktoberfest and Discord banner

Electron 社区 Discord 发布

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

为什么需要新的 Discord 服务器?

在 Electron 作为 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 中引入的、但反向移植到以前版本中的更改。我们希望这能让应用在升级 Electron 时更容易找到新功能和错误修复。

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

值得注意的变更

堆栈变更

重点特性

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

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

重大变更

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

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

API 变更

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

已弃用的 API

以下 API 现在已弃用或删除

  • 删除了 netLog 中已弃用的 currentlyLoggingPath 属性。 此外,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 中,我们计划继续重构工作,以实现 WeakRef,就像我们在 Electron 10 中所做的那样。 请阅读并关注 此问题,以获取有关弃用的完整计划和详细信息。

在 Electron 12 中要求原生 Node 模块是上下文感知或 N-API 的最后一步

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

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

Electron 成为 OpenJS 基金会的影响项目

·一分钟阅读

今天上午,在 OpenJS World 上,我们宣布 Electron 已正式从 OpenJS Foundation 的孵化计划毕业,现在是 OpenJS Foundation Impact Project。

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


了解更多

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

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

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

Google 文档季

·3 分钟阅读

Electron 很荣幸能参与 Google 的 Season of Docs 计划的第二版,该计划将开源组织的导师与技术作家配对,以改进项目文档。


什么是 Season of Docs?

Season of Docs logo

Season of Docs 是一项计划,旨在促进技术作家和开源社区之间的协作,从而使双方受益。 开源维护人员利用作者的技术写作专长来改进其文档的结构和内容,而技术作家则在其导师的指导下被介绍给开源社区。 在 Google 的 Season of Docs 网站上了解更多信息。

对于我们第一次参与该计划,我们将指导一位技术作家,他将与 Electron 的 Ecosystem Working Group 一起重塑我们文档的很大一部分。 您可以在 此处 了解有关整个项目的时间表的更多信息。

如何注册?

您是否有兴趣作为技术作家与我们合作? 首先,熟悉 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。 我们为拼写检查器功能添加了几个新的 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 模块并将其移至用户空间的第一步。 您可以阅读并关注 此问题,其中详细说明了我们这样做的原因,并包含弃用的建议时间表。
  • 默认情况下将 app.enableRendererProcessReuse 设置为 true。 #22336
    • 这是针对未来要求在渲染器进程中加载的本机 Node 模块必须是 N-API上下文感知 的持续工作。 完整信息和建议的时间表详见 此问题
  • 现在,通过 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 以访问基本服务 worker 信息并接收来自服务 worker 的控制台日志。 #22313
  • app API 更改
    • 在 macOS 上为 app.focus() 添加了一个新的 force 参数,以允许应用程序强制获取焦点。 #23447
  • BrowserWindow API 更改
    • 添加了对 BrowserWindow 上某些 getter/setter 对的属性访问的支持。 #23208

已弃用的 API

以下 API 现在已弃用或删除

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

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

即将发布的 Electron 版本

·一分钟阅读

Electron 暂时暂停主要版本的发布


发生了什么?

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

我们认为最好的选择是遵循 Chromium 的脚步,因此在此期间,Electron 团队将转向全职从事错误修复、安全、性能和稳定性方面的工作。

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

有关更多更新,请关注我们的 Twitter 帐户

编辑(2020-03-30):Electron 9 stable 将以 Chromium M83 为目标,并于 2020 年 5 月 19 日发布,以响应 Chromium 的声明 跳过 M82 stable 日期并调整 M83 stable 日期。

Electron 8.0.0

·7 分钟阅读

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 的结构化克隆算法。 这比现有逻辑更快、功能更强大且更少令人意外,并且为大型缓冲区和复杂对象带来了 2 倍的性能提升。 小消息的延迟没有受到显着影响。 有关更多详细信息,请参见 #20214

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

重大变更

  • 在上下文相关的模块的弃用警告中显示模块名称。 #21952
    • 这是针对未来要求在渲染器进程中加载的本机 Node 模块必须是 N-API上下文感知 的持续工作。 完整信息和建议的时间表详见 此问题
  • 通过 IPC 发送的值现在使用结构化克隆算法进行序列化。 #20214
  • 由于缺少维护人员来处理此功能,因此目前已禁用离屏渲染。 它在 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 变更
    • TouchBarButtonTouchBarLabel 添加了 accessibilityLabel 属性,以提高 TouchBarButton/TouchBarLabel 的可访问性。 #20454
    • 更新了 TouchBar 相关文档 #19444
  • tray API 变更
    • tray.displayBalloon() 添加了新选项:iconTypelargeIconnoSoundrespectQuietTime#19544
    • 添加了 tray.removeBalloon(),它会删除已显示的 balloon 通知。 #19547
    • 添加了 tray.focus(),它将焦点返回到任务栏通知区域。 feat: add 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) 检查特定共享 worker 的能力。 #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(),因为它依赖于远程模块。 #20726

5.x.y 停止支持

根据项目的支持策略,Electron 5.x.y 已停止支持。 建议开发人员和应用程序升级到较新版本的 Electron。

应用反馈计划

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

下一步是什么

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

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

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

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

Electron 加入 OpenJS 基金会

·2 分钟阅读

在蒙特利尔的Node+JS Interactive 上,OpenJS 基金会宣布它已接受 Electron 进入该基金会的孵化计划。 该基金会致力于通过提供一个中立的组织来托管和维持项目,以及协作资助活动以造福整个社区,来支持 JavaScript 生态系统和 Web 技术的健康发展。

OpenJS 基金会是许多开源 JavaScript 项目的所在地,包括 jQuery、Node.js 和 webpack。 它得到了 30 家企业和最终用户成员的支持,包括 GoDaddy、Google、IBM、Intel、Joyent 和 Microsoft。 Electron 是一个开源框架,用于使用 Web 技术构建跨平台桌面应用程序。

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


这对开发人员意味着什么

Electron 加入 OpenJS 基金会不会改变 Electron 的制作、发布或使用方式 - 并且不会直接影响使用 Electron 构建应用程序的开发人员。 即使 Electron 最初是在 2013 年在 GitHub 上创建的,但它目前由许多组织和个人维护。 2019 年,Electron 编纂了其治理结构,并大力投资于形式化影响整个项目的决策方式。 我们相信,拥有多个组织和开发人员投资并协作开发 Electron 使该项目更加强大。

将 Electron 从由单一公司实体拥有提升到一个专注于支持 Web 和 JavaScript 生态系统的中立基金会,是我们作为一个开源项目走向成熟的自然下一步。

了解更多

您可以在OpenJSF 网站上阅读有关该基金会、其使命及其成员的信息。 有关 Electron 获得 OpenJSF 孵化计划的更多信息和引言,请查看官方新闻稿。 要了解更多关于 Electron 背后的人以及他们如何协同工作的信息,请查看我们的治理页面

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

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

·2 分钟阅读

在 Chrome 中发现了一个高危漏洞,该漏洞会影响所有基于 Chromium 的软件,包括 Electron。

此漏洞已分配 CVE-2019-13720。 您可以在Chrome 博客文章中阅读有关它的更多信息。

请注意,Chrome 报告了此漏洞已被利用的情况,因此强烈建议您尽快升级 Electron。


范围

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

缓解

受影响的应用程序应升级到 Electron 的修补版本。

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

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

更多信息

此漏洞由卡巴斯基实验室的 Anton Ivanov 和 Alexey Kulaev 发现并报告给 Chrome 团队。 Chrome 博客文章可以在此处找到。

要了解更多关于保持 Electron 应用程序安全的最佳实践,请参阅我们的安全教程

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