跳转到主要内容

Electron 6.0.0

·6 分钟阅读

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


新内容

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

Electron 的大部分功能由 Chromium、Node.js 和 V8 的核心组件提供。Electron 会及时更新这些项目,为用户提供新的 JavaScript 功能、性能改进和安全修复。在 Electron 6 中,这些包中的每一个都经历了主版本号的提升。

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

Promise 化

Electron 6.0 继续推进 5.0 版本启动的现代化 举措,以改进 Promise 支持。

这些函数现在返回 Promises,并且仍然支持旧的基于回调的调用方式。

  • 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

这些函数现在返回 Promises。

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

为了启用 强化运行时,该运行时限制了可写可执行内存和加载由不同 Team 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,请关注 此 issue 以跟踪对这些新 Helper 的支持。

破坏性变更

  • 此版本开始为未来要求在渲染器进程中加载的本机 Node 模块必须是 N-APIContext 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 的新主要版本,其中包含这些组件的新版本。 暂定的 7.0.0 时间表 概述了 Electron 7 开发生命周期的关键日期。 此外,请参阅我们的版本控制文档,以获取有关 Electron 版本控制的更详细信息。

有关 Electron 未来版本中计划的破坏性更改的信息,请 参阅我们的计划破坏性更改文档