跳到主要内容

Google 文档季

·2 分钟阅读

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


什么是文档季?

Season of Docs logo

文档季是一项旨在促进技术作家和开源社区之间合作的计划,这对双方都有好处。开源维护人员利用作家的技术写作专业知识来改进其文档的结构和内容,而技术作家则在导师的指导下被引入开源社区。在 Google 的文档季网站上了解更多信息。

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

如何注册?

您是否有兴趣作为技术作家与我们合作?首先,熟悉 Google 今年计划的技术作家指南,并查看我们准备的两个项目创意草案

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

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

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

如果您想讨论项目提案,请发送电子邮件至[email protected],我们可以从那里开始聊天!

参考

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

重大更改

  • 在未使用 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 取代。 提案
  • sessionAPI 更改
    • 添加了 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 取代。
  • <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、如何轻松启用它及其安全优势的更多信息,请参阅我们专门的 上下文隔离文档

即将发布的 Electron 版本

·一分钟阅读

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 的结构化克隆算法。这比现有的逻辑更快、功能更强大且更易于理解,并且为大型缓冲区和复杂对象带来了 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
    • 为 Linux 通知添加了 urgency 选项以设置紧急程度。 #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(),它会移除已显示的通知气泡。 #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) 来检查特定共享工作线程的功能。 #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> 标签上的 setLayoutZoomLevelLimits,因为 Chromium 删除了此功能。 #21296
  • 现在已弃用 app.allowRendererProcessReuse 的默认值 false#21287
  • 弃用了 <webview>.getWebContents(),因为它依赖于 remote 模块。 #20726

5.x.y 版本停止支持

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

应用程序反馈计划

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

下一步是什么

短期内,您可以期待团队继续专注于跟上构成 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 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)

·一分钟阅读

在 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 中的漏洞,请发送电子邮件至[email protected]

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
    • 现在使用 Promise 的函数的基于回调的版本。 #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 测试版;作为回报,他们发现的新错误将在稳定版本中优先处理。 如果您想参与或了解更多信息,请查看我们关于该计划的博客文章

下一步是什么

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

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

Electron 6.0.0

·4 分钟阅读

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


新功能

今天标志着 Electron 项目的一个首次:这是我们第一次在相应的 Chrome 稳定版本发布的同一天发布稳定的 Electron 版本! 🎉

Electron 的大部分功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 与这些项目保持同步,以便为我们的用户提供新的 JavaScript 功能、性能改进和安全修复。这些软件包中的每一个在 Electron 6 中都有一个主要版本升级

此版本还包括对 Electron API 的改进。发行说明 包含更完整的列表,但以下是一些亮点

Promise 化

Electron 6.0 继续了在 5.0 中启动的现代化 倡议,以改进 Promise 支持。

这些函数现在返回 Promise,并且仍然支持较旧的基于回调的调用

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

这些函数现在有两种形式,同步和基于 Promise 的异步形式

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

这些函数现在返回 Promise

Electron Helper (Renderer).appElectron Helper (GPU).appElectron Helper (Plugin).app

为了启用 硬化运行时,该运行时会限制诸如可写可执行内存和加载由不同团队 ID 签名的代码之类的行为,需要向 Helper 授予特殊的代码签名权利。

为了将这些权利限定为需要它们的进程类型,Chromium 添加 了三个新的 Helper 应用程序变体:一个用于渲染器 (Electron Helper (Renderer).app),一个用于 GPU 进程 (Electron Helper (GPU).app) 和一个用于插件 (Electron Helper (Plugin).app)。

使用 electron-osx-sign 对其 Electron 应用程序进行代码签名的人员不应对其构建逻辑进行任何更改。如果您使用自定义脚本对应用程序进行代码签名,则应确保正确对三个新的 Helper 应用程序进行代码签名。

为了使用这些新的 Helper 正确打包您的应用程序,您需要使用 [email protected] 或更高版本。如果您正在使用 electron-builder,则应关注 此问题,以跟踪对这些新 Helper 的支持。

重大更改

  • 此版本开始为将来的要求奠定基础,该要求要求加载到渲染器进程中的本机 Node 模块必须是 N-API上下文感知 的。此更改的原因是提高性能、增强安全性和减少维护工作量。阅读 此问题 中的完整详细信息,包括建议的时间表。此更改预计将在 Electron v11 中完成。

  • net.IncomingMessage 的 headers 发生了一些细微的改变,以更紧密地匹配 Node.js 的行为,特别是 set-cookie 的值以及如何处理重复的 headers。 #17517

  • shell.showItemInFolder() 现在返回 void 并且是一个异步调用。 #17121

  • 应用现在必须在使用 app.getPath('log') 之前,通过调用新函数 app.setAppLogPath() 来显式设置日志路径。 #17841

对 3.x.y 的支持已结束

根据我们的 支持政策,3.x.y 已达到生命周期结束。 鼓励开发者和应用程序升级到较新版本的 Electron。

应用程序反馈计划

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

下一步是什么

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

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

新的 Electron 发布节奏

·3 分钟阅读
⚡️ 更新 (2021-07-14):我们甚至更快了!

在 2021 年第三季度,Chrome 团队将其发布节奏从每 6 周增加到每 4 周。 Electron 的发布也随之调整。请阅读更新的8 周节奏博客文章,以获取更多最新信息!

🎉 Electron 正在转向每 12 周发布一个新的主要稳定版本! 🎉


⚡️ 哇,太快了!但是为什么?

简而言之,Chromium 不会停止发布,因此 Electron 也不会放慢脚步。

Chromium 按照每 6 周一次的固定时间表发布。为了在 Electron 中交付最新版本的 Chromium,我们的时间表需要与他们保持一致。有关 Chromium 发布周期的更多信息,请参见此处

🚀 为什么是每 12 周?

每 6 周,一个新的 Chromium 版本都会发布,其中包含新功能、错误修复/安全修复和 V8 改进。Electron 的用户一直明确表示希望及时获得这些更改,因此我们调整了稳定版本的发布日期,以匹配每隔一次 Chromium 稳定版本发布。首先,Electron v6.0.0 将包含 M76,并计划于 2019 年 7 月 30 日发布稳定版本,与 Chromium M76 的发布日期相同。

🚧 这对我和我的 Electron 应用意味着什么?

您将比以前更快地获得新的 Chromium 和 V8 功能和修复。重要的是,您还将知道这些新更改何时到来,因此您将能够比以前更好地计划。

Electron 团队将继续支持最新的三个主要版本。例如,当v6.0.0 于 2019 年 7 月 30 日发布稳定版本时,我们将支持 v6.x、v5.x 和 v4.x,而 v3.x 将达到生命周期结束。

💬 应用反馈计划

请考虑加入我们的 应用反馈计划,以帮助我们测试我们的 beta 版本并稳定化。参与此计划的项目将在其应用程序上测试 Electron beta 版;作为回报,他们发现的新错误将在稳定版本中优先处理。

📝 Electron 版本发布的简要历史

在 v3.0.0 之前的稳定版本决定没有遵循时间表。我们在 v3.0.0 和 v4.0.0 中向项目添加了内部时间表。今年早些时候,我们决定首次公开我们的稳定版本发布日期,用于 Electron v5.0.0。宣布我们的稳定版本发布日期受到了普遍的积极评价,我们很高兴继续为未来的版本这样做。

为了更好地简化这些与升级相关的工作,我们的 升级发布 工作组在我们的 治理 系统中创建。它们使我们能够更好地优先处理和委派这项工作,我们希望这将在每个后续版本中变得更加明显。

以下是我们的新节奏与 Chromium 的节奏相比的位置

line graph comparing Electron versus Chromium versions

📨 如果您有疑问,请发送邮件至 [email protected]

Electron 5.0.0

·4 分钟阅读

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


新增功能?

Electron 的许多功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 与这些项目保持同步,以便为我们的用户提供新的 JavaScript 功能、性能改进和安全修复。这些软件包中的每一个在 Electron 5 中都有一个主要版本提升

Electron 5 还包括对 Electron 特定 API 的改进。下面是主要更改的摘要;有关更改的完整列表,请查看 Electron v5.0.0 发行说明

Promise 化

Electron 5 继续 Promisification 倡议,将 Electron 基于回调的 API 转换为使用 Promises。这些 API 已为 Electron 5 转换

  • app.getFileIcon
  • contentTracing.getCategories
  • contentTracing.startRecording
  • contentTracing.stopRecording
  • debugger.sendCommand
  • Cookies API
  • shell.openExternal
  • webContents.loadFile
  • webContents.loadURL
  • webContents.zoomLevel
  • webContents.zoomFactor
  • win.capturePage

macOS 的系统颜色访问

这些函数已更改或添加到 systemPreferences 以访问 macOS 系统的颜色

  • systemPreferences.getAccentColor
  • systemPreferences.getColor
  • systemPreferences.getSystemColor

进程内存信息

已添加函数 process.getProcessMemoryInfo 以获取有关当前进程的内存使用情况统计信息。

远程 API 的其他过滤

为了提高 remote API 的安全性,添加了新的远程事件,以便可以过滤 remote.getBuiltinremote.getCurrentWindowremote.getCurrentWebContents<webview>.getWebContents

BrowserWindow 上的多个 BrowserView

BrowserWindow 现在支持在同一个 BrowserWindow 中管理多个 BrowserView。

重大更改

打包应用程序的默认值

打包的应用程序现在的行为将与默认应用程序相同:除非应用程序具有一个默认的应用程序菜单,否则将创建一个默认的应用程序菜单,并且将自动处理 window-all-closed 事件,除非应用程序处理该事件。

混合沙箱

混合沙箱模式现在默认启用。以 sandbox: true 启动的渲染器现在将实际进行沙箱化,而以前只有在也启用了混合沙箱模式时才会进行沙箱化。

安全改进

nodeIntegrationwebviewTag 的默认值现在为 false 以提高安全性。

拼写检查器现在是异步的

拼写检查 API 已更改为提供 异步结果

弃用

以下 API 在 Electron 5.0.0 中被新弃用,并计划在 6.0.0 中删除

arm 和 arm64 的 Mksnapshot 二进制文件

arm 和 arm64 的 mksnapshot 的本机二进制文件已弃用,将在 6.0.0 中删除。可以使用 x64 二进制文件为 arm 和 arm64 创建快照。

WebContents 上的 ServiceWorker API

已弃用 WebContents 上的 ServiceWorker API,为删除它们做准备。

  • webContents.hasServiceWorker
  • webContents.unregisterServiceWorker

具有沙箱化 webContents 的自动模块

为了提高安全性,以下模块将被弃用,不再支持通过 require 直接使用,而需要在沙盒化的 webcontents 中通过 remote.require 引入。

  • electron.screen
  • child_process
  • fs
  • os
  • path

webFrame 隔离世界 API

webFrame.setIsolatedWorldContentSecurityPolicywebFrame.setIsolatedWorldHumanReadableNamewebFrame.setIsolatedWorldSecurityOrigin 已被弃用,请改用 webFrame.setIsolatedWorldInfo

混合沙盒

enableMixedSandbox--enable-mixed-sandbox 命令行开关仍然存在以保持兼容性,但已被弃用,并且不起作用。

停止支持 2.0.x 版本

根据我们的支持版本政策,2.0.x 版本已到达生命周期终点。

应用程序反馈计划

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

下一步是什么

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

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