Electron 6.0.0
稳定版已于昨天正式发布,此版本的更新内容包括升级组件、修复
bug
以及引入新特性等。有意思的是,团队表示这是首次在同一天同时发布与 Electron
稳定版对应的 Chrome 稳定版(Chrome
76)。

Electron 7.0.0 稳定版正式发布了,Electron 是 GitHub
开发的跨平台桌面应用开发工具,支持使用 Web 技术开发桌面应用,其基于 C++
开发,GUI 核心来自于 Chromium,而 JavaScript 引擎使用 V8。

在2月公开分享Electron 5.0及更高版本的发布时间表之后,周二Electron
5.0按照计划发布了新功能,升级和修复程序。
Electron附带了核心组件Chromium,Node.js和V8的最新版本升级:Chromium
73.0.3683.119,Node.js 12.0.0和V8 7.3.492.27。 Electron
5.0还包括对Electron特定API的改进。随着这个版本的释放,Electron
2.0.x已达到使用寿命。

可通过 npm install electron@latest 命令进行升级,或者从下载页面下载新版本。

Notable Changes

澳门葡萄京官方网站 1

Electron 是 GitHub 开发的跨平台桌面应用开发工具,支持使用 Web
技术开发桌面应用,其基于 C++ 开发,GUI 核心来自于 Chromium,而
JavaScript 引擎使用 V8。

Electron 的核心组件是 Chromium、Node.js 与
V8,按照国际惯例它一般都会与这些项目保持同步更新,以提供最新的
JavaScript 特性、性能改进和安全修复。在此版本中这三者分别升级内容如下:

Electron
5.0的主要变化打包应用程序现在的行为与默认应用程序相同。将创建一个默认的应用程序菜单(除非应用程序有一个),并且将自动处理全部关闭窗口的事件。
(除非应用程序处理事件)现在默认启用混合沙箱模式。使用sandbox启动的渲染器:true现在实际上是沙箱,如果还启用了混合沙箱模式,之前它们只会被沙箱化。nodeIntegration和webviewTag的默认值现在为false,以提高安全性。SpellCheck
API已更改为提供异步结果。 新功能
BrowserWindow现在支持在同一个BrowserWindow中管理多个BrowserView。电子5继续电子的Promisification计划。该计划将在Electron中转换基于回调的函数以返回Promises。在此过渡期间,这些函数的回调和基于Promise的版本都将正常工作,并且都将记录在案。针对Electron
5.0,总共转换了12个API。更改了三个函数或将其添加到systemPreferences以访问macOS系统的颜色。这些包括systemPreferences.getAccentColor,systemPreferences.getColor和systemPreferences.getSystemColor添加了函数process.getProcessMemoryInfo以获取有关当前进程的内存使用情况统计信息。添加了新的远程事件以提高远程API的安全性。现在,可以过滤remote.getBuiltin,remote.getCurrentWindow,remote.getCurrentWebContents和.getWebContents。
弃用的APIElectron
5.0.0中新推出了三个API,计划在6.0.0中删除。其中包括arm和arm64的Mksnapshot二进制文件,WebContents上的ServiceWorker
API以及带有沙盒webContents的自动模块。

澳门葡萄京官方网站 2

Chromium 78.0.3905.1

这些只是一些选择。有关其他具体细节,您可能会看到发行说明。另外,请查看关于Electron
6开发生命周期中关键日期的暂定6.0.0计划。

更新内容

Electron 的核心组件是 Chromium、Node.js 与
V8,按照国际惯例它一般都会与这些项目保持同步更新,以提供最新的
JavaScript
特性、性能改进和安全修复。在此版本中这三者分别升级到了:Chromium 76.0.3809.88、Node.js 12.4.0、V8 7.6.303.22

  • Chromium 76.0.3809.88
    • New in
      74
    • New in
      75
    • New in
      76
  • Node.js 12.4.0
    • Node 12.4.0
      更新内容
  • V8 7.6.303.22
    • V8 7.6
      更新内容

除了针对组件的更新,此版本还包括对 Electron API
的改进。完整列表请查看发布说明,值得关注的如下:

Node.js12.8.1

Promisification

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:

  • app.dock.show() #16904

Node 12.8.1 更新内容

Electron Helper (Renderer).app, Electron Helper (GPU).app 和 Electron Helper (Plugin).app

由于要启用 hardened
runtime(强化运行时) 功能,这会限制可写可执行内存(writable-executable
memory)和加载由不同团队 ID 签名的代码,另外还需要向 Helper
授予专用的代码签名权限。

因此,为了将这些权限限定在需要它们的的流程类型(process
types),Chromium
添加了三个新的
Helper.app 变体:一个用于渲染器
(Electron Helper (Renderer).app)、一个用于 GPU 进程
(Electron Helper (GPU).app),还有一个用于插件
(Electron Helper (Plugin).app)。

使用 electron-osx-sign 对其 Electron App
进行代码签名的开发者不会对他们的构建逻辑进行任何变更,如果使用自定义脚本对
App 进行签名,则应确保三个新的 Help 应用程序已正确签名。

为了使用这些新的 helper
正确打包应用程序,我们需要使用 electron-packager@14.0.4 或更高版本。如果正在使用 electron-builder,建议遵循此
issue
来跟踪对新 helper 的支持。

增加了 Windows on ARM 版本

结束对 3.x.y 的支持

根据版本支持计划,Electron
3.x.y 已经到达 EOF 阶段
,官方不再对其提供支持。

为异步请求/响应的 IPC 添加了 ipcRenderer.Invoke

未来计划

短期来看,团队会继续升级 Electron 的核心组件,包括 Chromium、Node 和
V8。至于更新频率,计划是每季度发布一次新的主要版本,同时对核心组件进行升级。7.0.0
的暂定发布时间表列出了
Electron 7 开发周期中的关键时间节点。如需获取有关 Electron
版本的更多信息,请查看版本控制文档。

(文/开源中国)    

添加了 nativeTheme API 来读取和响应操作系统主题和颜色方案的变化

切换到新的 TypeScript Definitions 生成器,生成更加精确的定义

Breaking Changes

Tray.setHighlightMode

app.enableMixedSandbox()

app.getApplicationMenu()

app.setApplicationMenu()

powerMonitor.querySystemIdleState()

powerMonitor.querySystemIdleTime()

webFrame.setIsolatedWorldContentSecurityPolicy()

webFrame.setIsolatedWorldHumanReadableName()

webFrame.setIsolatedWorldSecurityOrigin()

Session.clearAuthCache() 不再过滤已清除的缓存条目

MacOS 上的本机接口现在自动匹配用户机器上的暗模式设置

更新 electron 模块以使用 @Electronics/get,支持Node 8

Electron.asar 文件不再存在

New Features

所有异步 webContent/ 方法现在返回一个Promise

为 macOS 添加了always-on-top-changed

在 Netlog API 中添加captureMode 和 maxFileSize 选项

在 app.getAppMetrics() 输出中添加了 creationTime/sandbox/IntegrityLevel

向 webContents.print() 回调函数中添加了failureReason
参数,以区分成功、失败和取消

为 BrowserView 添加了 getBalls() 方法

将 gpu-info-update 事件添加到 app 中,只要有 gpu 信息更新,就会发出
gpu-info 更新事件

在 app.getAppMetrics() 添加memory

添加process.getBlinkMemoryInfo()

在 webFrame/webContent/ 中添加了 emoveInsertedCSS()

将 zoom-changed 事件添加到 webContent 中

app.moveToApplicationsFold 添加了一个可选的冲突处理回调

支持 webFrame.sertCSS() 中的 CSSorigin

在 Windows 上支持 Tray API 的 mouse-move 事件

Windows上支持systemPreferences.isDarkMode() API

macOS上支持systemPreferences.isHighContrastColorScheme() API

启用 W3CReporting API

macOS 上实现了 BrowserWindow.setFocable

在校验和文件中添加 Windows on ARMnode 头文件

另外此版本还有许多修复和属性更改,更多详情见发布说明。