专栏首页code秘密花园Electron 9.0.0发布!带来三项重大改进,不再支持Electron 6

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

作者 | Electron 团队

译者 | 王强

策划 | 李俊辰

“真香”定律再度应验。

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

值得关注的更改

栈更改

  • Chromium 83.0.4103.64
    • Chrome 81 的新特性
      • https://developers.google.com/web/updates/2020/04/nic81
    • 跳过 Chrome 82
      • https://chromereleases.googleblog.com/2020/03/chrome-and-chrome-os-release-updates.html
    • Chrome 83 的新特性
      • https://developers.google.com/web/updates/2020/05/nic83
  • Node.js 12.14.1
    • Node 12.14.1 介绍
      • https://nodejs.org/en/blog/release/v12.14.1/
  • V8 8.3
    • V8 8.1 介绍
      • https://v8.dev/blog/v8-release-81
    • V8 8.3 介绍
      • https://v8.dev/blog/v8-release-83

重要特性

  • 拼写检查器功能新增多项改进。请参阅 #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 更改:
    • shell.openItem API 已替换为异步的 shell.openPath API:
      • https://github.com/electron/governance/blob/master/wg-api/spec-documents/shell-openitem.md
  • 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 的支持终止

根据项目的支持政策,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

本文分享自微信公众号 - code秘密花园(code_mmhy)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 14个 JavaScript 代码优化技巧

    这篇文章列举了一些技巧,可帮助你写出更好的 JavaScript 代码,从而提高性能。

    ConardLi
  • 模态框的最佳实践

    来自 Wikipedia 的定义:模态框是一个定位于应用视窗定层的元素。它创造了一种模式让自身保持在一个最外层的子视察下显示,并让主视窗失效。用户必须在回到主视...

    ConardLi
  • 深入理解图片和框架的原生懒加载功能

    看到本文标题你会问「懒加载是什么东西?」CSS-Tricks 网站中有非常多的探讨懒加载的文章,其中有一篇非常详尽的《用 JavaScript 花式实现懒加载的...

    ConardLi
  • Eclipse_常用技巧_03_字母大小写转换快捷键

    shirayner
  • 编程即人生:从编代码中学到的三条生活感悟

    大数据文摘
  • SpringBoot 去除"No MyBatis mapper was found in '[com.pollyduan.cms]' package. " 警告

    我在 com.pollyduan.cms.CmsApplication 主类上使用 @MapperScan(basePackages="com.pollydua...

    pollyduan
  • [第三周]Python内置函数功能汇总

    3.5版本中的68个内置函数分类(https://blog.csdn.net/oaa608868/article/details/53506188)

    OrekiShiko
  • 8个你会爱上的 VS Code 扩展

    https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments

    dys
  • li 前面的缩进怎么去除?

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html ? ? 设置margin和padding为...

    逸鹏
  • 利用vscode当golang编写IDE的配置过程

    vscode以良好的兼容性进来收到追捧。整个vscode执行效率比基于java的ide效率又高。一直用liteide来编写golang,但是liteide调试时...

    xiny120

扫码关注云+社区

领取腾讯云代金券