Electron 6.0.0
Electron 团队很高兴宣布发布 Electron 6.0.0!您可以通过 npm 使用 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 的改进。发布说明中有更完整的列表,以下是亮点部分:
Promise 化
Electron 6.0 继续了在 5.0 中启动的现代化倡议,以改进 Promise 支持。
这些函数现在返回 Promise,并且仍然支持旧的基于回调的调用方法:
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
这些函数现在返回 Promise:
app.dock.show()
#16904
Electron Helper (Renderer).app
、Electron Helper (GPU).app
和 Electron 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 打包您的应用,您需要使用 electron-packager@14.0.4
或更高版本。如果您正在使用 electron-builder
,您应该关注此议题以跟踪对这些新 Helper 的支持。
重大变更
-
本次发布开始为未来的一个要求奠定基础,即在渲染器进程中加载的 Node 原生模块必须是 N-API 或 上下文感知(Context Aware)的。做出此更改的原因是为了更快的性能、更强的安全性和减少维护工作量。请阅读此议题中的完整详情,包括提议的时间表。此更改预计在 Electron v11 中完成。
-
net.IncomingMessage
的头部已略有变化,以便更接近 Node.js 的行为,特别是关于set-cookie
的值以及如何处理重复的头部。#17517。 -
shell.showItemInFolder()
现在返回 void 且是一个异步调用。#17121 -
现在,应用必须在使用
app.getPath('log')
之前调用新的函数app.setAppLogPath()
来显式设置日志路径。#17841
停止支持 3.x.y
根据我们的支持政策,3.x.y 已达到生命周期终止。鼓励开发者和应用程序升级到较新版本的 Electron。
应用反馈计划
我们继续使用我们的应用反馈计划进行测试。参与此计划的项目会在其应用上测试 Electron Beta 版本;作为回报,他们发现的新错误将优先在新稳定版中修复。如果您想参与或了解更多信息,请查看我们关于此计划的博客文章。
下一步计划
短期内,您可以期待团队继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。尽管我们谨慎地不承诺发布日期,但我们的计划是大约每季度发布带有这些新组件版本的新 Electron 主要版本。暂定的 7.0.0 时间表列出了 Electron 7 开发生命周期中的关键日期。另外,请参阅我们的版本控制文档,以获取关于 Electron 版本控制的更详细信息。
有关即将发布的 Electron 版本中的计划重大变更的信息,请参阅我们的计划重大变更文档。