首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Electron 9.0.0发布!带来三项重大改进,不再支持Electron 6

“真香”定律再度应验。

美国时间5月19日,Electron 团队宣布 Electron 9.0.0正式发布。新版包括了Chromium 83、V8 8.3和Node.js 12.14几个组件的升级。此次更新为拼写检查器功能添加了几个新的API集成,并新增了PDF查看器,还有很多其他的更新。

开发者可以在npm上使用npm install electro@latest命令安装,或从 Electron 的发行网站下载(https://electronjs.org/releases/stable)。新版本包含众多升级、修补程序和新功能,本文会介绍这个版本的更新细节。

值得关注的更改

栈更改

重要特性

  • 拼写检查器功能新增多项改进。请参阅#22128和#22368了解更多细节。
  • Linux上的窗口事件处理程序效率提升。#23260。
  • 新增PDF查看器。#22131。

关于新功能和更改的完整列表,请参见9.0.0发行说明:

https://github.com/electron/electron/releases/tag/v9.0.0

重大改进

  • 使用remote模块时如不带enableRemoteModle: true,会发出弃用警告。#21546
    • 这是我们计划弃用remote模块并将其移至用户区的第一步。可以关注这个issue(https://github.com/electron/electron/issues/21408)了解细节,其中详细说明了此举的原因,还列出了建议的弃用时间表。
  • 默认情况下,将app.enableRendererProcessReuse设置为true。#22336
    • 这是一项持续性工作,针对未来的一个需求,即渲染器进程中加载​​的原生Node模块应为N-API或Context Aware之一。这个issue详细介绍了完整的信息和建议的时间表(https://github.com/electron/electron/issues/18397)。
  • 现在,通过IPC发送非JavaScript对象会抛出异常。#21560
    • 此行为在Electron 8.0中已弃用。在Electron 9.0中,旧的序列化算法已被移除,现在,发送这一类不可序列化的对象将出现“object could not be cloned(无法克隆的对象)”错误。

关于这些改进以及未来改进的更多信息,请参阅“计划的重大改进”页面:

https://github.com/electron/electron/blob/master/docs/breaking-changes.md

API更改

  • shell API更改:
  • session API更改:
    • 添加了session.listWordsFromSpellCheckerDictionary API,以列出字典中的自定义单词。#22128
    • 添加了session.removeWordFromSpellCheckerDictionary API,以删除字典中的自定义单词。#22368
    • 添加了session.serviceWorkerContext API,以访问基本服务worker信息并接收来自服务worker的控制台日志。#22313
  • app API更改:
    • 在macOS上的app.focus()中添加了一个新的force参数,以允许应用强制聚焦。#23447
  • BrowserWindow API更改:
    • 添加了对BrowserWindow上某些getter/setter对的属性访问的支持。#23208

弃用的API

新版已弃用或移除了以下API:

  • shell.openItem API现已弃用,并用异步的shell.openPath API代替。
  • .getWebContents(在Electron 8.0中已弃用)现已移除。
  • webFrame.setLayoutZoomLevelLimits(在Electron 8.0中已弃用)现已移除。

对6.x.y的支持终止

根据项目的支持政策(https://electronjs.org/docs/tutorial/support#supported-versions),Electron 6.x.y已达到支持终止阶段。我们鼓励开发人员和应用程序升级到新版本的Electron。

下一步计划

在短期内,你可以期望团队继续专注于构成Electron的主要组件(包括Chromium、Node和V8)的开发工作。虽然我们不会对未来版本的发布日期做出明确的保证,但我们的计划是大约每个季度更新Electron的主版本,同时更新这些组件的版本。暂定的10.0.0时间表中列出了Electron 10.0开发周期中的关键时点:

https://electronjs.org/docs/tutorial/electron-timelines

另请参阅我们的版本控制文档,获取有关Electron中版本控制的更多细节:

https://electronjs.org/docs/tutorial/electron-versioning

关于未来的Electron版本中计划的重大更改细节,请参阅我们计划中的重大更改文档:

https://github.com/electron/electron/blob/master/docs/breaking-changes.md

将contextIsolation的默认值从false更改为true(从Electron 10开始)

如果没有contextIsolation,在渲染器进程中运行的任何代码都可以很容易地进入Electron内部或应用的预加载脚本中。然后这些代码就可以执行一些Electron想要限制的特权操作了。

更改这个默认设置可提高Electron应用的默认安全性,新设置下应用需要主动开启选项才能执行不安全行为。Electron将在Electron 10.0中弃用contextIsolation当前的默认值,并在Electron 12.0中更改为新的默认值(true)。

关于contextIsolation的介绍、启用方法以及安全性细节,请参阅我们专门编写的Context Isolation文档:

https://github.com/electron/electron/blob/master/docs/tutorial/context-isolation.md

针对新版的反馈可通过Twitter提交:https://twitter.com/electronjs

需要帮助或提交bug,请联系:https://www.electronjs.org/contact

延伸阅读

https://www.electronjs.org/blog/electron-9-0

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/pkNxY0l5sbX0c69uVwCA
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券