Electron 6.0.0
Electron 团队很兴奋地宣布 Electron 6.0.0 的发布!您可以通过 npm install electron@latest 来安装它,或者从我们的 发布网站 下载。本次发布包含了大量的升级、修复和新功能。我们迫不及待地想看到您将用它们构建出什么!请继续阅读以了解本次发布的详细信息,并请分享您的任何反馈!
新增内容
今天对 Electron 项目来说是重要的里程碑:这是我们首次在与相应的 Chrome 稳定版发布的同一天发布稳定的 Electron 版本!🎉
Electron 的大部分功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 会及时跟进这些项目的更新,以便为用户提供新的 JavaScript 功能、性能改进和安全修复。Electron 6 中,这些包中的每一个都经历了主版本号的更新。
- Chromium
76.0.3809.88 - Node.js
12.4.0 - V8
7.6.303.22
本次发布还包括对 Electron API 的改进。发布说明中有更完整的列表,但以下是亮点:
Promises 化
Electron 6.0 继续了 5.0 版本启动的现代化计划,以改进 Promise 的支持。
这些函数现在返回 Promises,并且仍然支持旧的基于回调的调用方式。
contentTracing.getCategories()#16583contentTracing.getCategories()#16583contentTracing.getTraceBufferUsage()#16600contents.executeJavaScript()#17312cookies.flushStore()#16464cookies.get()#16464cookies.remove()#16464cookies.set()#16464dialog.showCertificateTrustDialog()#17181inAppPurchase.getProducts()#17355inAppPurchase.purchaseProduct()#17355netLog.stopLogging()#16862session.clearAuthCache()#17259session.clearCache()#17185session.clearHostResolverCache()#17229session.clearStorageData()#17249session.getBlobData()#17303session.getCacheSize()#17185session.resolveProxy()#17222session.setProxy()#17222webContents.hasServiceWorker()#16535webContents.printToPDF()#16795webContents.savePage()#16742webFrame.executeJavaScript()#17312webFrame.executeJavaScriptInIsolatedWorld()#17312webviewTag.executeJavaScript()#17312
这些函数现在有两种形式:同步和基于 Promise 的异步。
dialog.showMessageBox()/dialog.showMessageBoxSync()#17298dialog.showOpenDialog()/dialog.showOpenDialogSync()#16973dialog.showSaveDialog()/dialog.showSaveDialogSync()#17054
这些函数现在返回 Promises。
app.dock.show()#16904
Electron Helper (Renderer).app、Electron Helper (GPU).app 和 Electron Helper (Plugin).app
为了启用硬化运行时(它会限制诸如可写可执行内存和加载由不同 Team ID 签名的代码等操作),必须为 Helper 授予特殊的代码签名权限。
为了将这些权限限定在需要它们的过程类型,Chromium 添加了三种新的 Helper App 变体:一种用于渲染器(Electron Helper (Renderer).app),一种用于 GPU 进程(Electron Helper (GPU).app),以及一种用于插件(Electron Helper (Plugin).app)。
使用 electron-osx-sign 对其 Electron 应用进行代码签名的用户应该不需要对其构建逻辑进行任何更改。如果您使用自定义脚本对应用进行代码签名,则应确保这三个新的 Helper 应用程序已正确地进行了代码签名。
为了正确地打包您的应用程序并包含这些新的 Helper,您需要使用 electron-packager@14.0.4 或更高版本。如果您正在使用 electron-builder,则应关注 此问题以跟踪对这些新 Helper 的支持。
破坏性变更
-
本次发布开始为未来一个要求在渲染进程中加载的原生 Node 模块必须是 N-API 或 Context Aware 的要求奠定基础。此更改的原因是为了获得更快的性能、更强的安全性以及减少维护工作量。请参阅此 issue以了解包括计划时间表在内的完整详细信息。预计此更改将在 Electron v11 中完成。
-
net.IncomingMessage的头部略有改变,以更紧密地匹配 Node.js 的行为,特别是在set-cookie的值以及如何处理重复的头部方面。#17517。 -
shell.showItemInFolder()现在返回 void 并且是一个异步调用。#17121 -
应用程序现在必须通过调用新的函数
app.setAppLogPath()来显式设置日志路径,然后才能使用app.getPath('log')。#17841
3.x.y 版本停止支持
根据我们的支持策略,3.x.y 版本已达到生命周期终点。我们鼓励开发者和应用程序升级到更新版本的 Electron。
应用反馈计划
我们继续使用我们的应用反馈计划进行测试。参与此计划的项目会在其应用上测试 Electron 的 beta 版本;作为回报,他们发现的新 bug 会被优先处理并包含在稳定版本中。如果您想参与或了解更多信息,请查看我们关于该计划的博客文章。
下一步计划
短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们非常谨慎地不承诺发布日期,但我们的计划是大约每季度发布一个包含这些组件新版本的新 Electron 主要版本。 Electron 7.0.0 的暂定时间表概述了 Electron 7 开发生命周期中的关键日期。此外,请参阅我们的版本控制文档以获取有关 Electron 版本控制的更详细信息。
有关 Electron 未来版本中计划的重大变更信息,请参阅我们的“计划中的重大变更”文档。


