Electron 4.0稳定版发布,集成Node 10和Chromium 69

2018 年 12 月 25 日

Electron 4.0稳定版发布,集成Node 10和Chromium 69

Electron 团队宣布推出 Electron 4.0 稳定版啦!新版本包含了升级、修复和新特性,更多信息请阅读下文。


你现在可以从 electronjs.org 下载,或者通过 npm install electron@latest 来安装它了。


新特性


Electron 的很大一部分功能由 Chromium、Node.js 和 V8 提供,它们是构成 Electron 的核心组件。因此,Electron 团队的一个关键目标是尽可能跟上这些项目的变化,让 Electron 用户能够使用新的 Web 和 JavaScript 特性。为此,Electron 4 将每个组件升级到主要版本,Electron 4 对应的组件版本分别是:Chromium 69.0.3497.106、Node 10.11.0 和 V8 6.9.427.24。


此外,Electron 4 还包括对 Electron 特定 API 的变更,下面将列出 Electron 4 中的一些主要变更,完整的变更列表请查看Electron 4发行说明


禁用 remote 模块


你现在可以出于安全原因禁用 remote 模块,可以为 BrowserWindows 和 webview 标记禁用该模块:


// BrowserWindownew BrowserWindow({  webPreferences: {    enableRemoteModule: false  }})
// webview tag<webview src="http://www.google.com/" enableremotemodule="false"></webview>
复制代码


过滤 remote.require()/remote.getGlobal()请求


如果你不想在渲染器进程或 webview 中完全禁用 remote 模块,但又希望进一步控制需要哪些模块(通过 remote.require),那么这个特性就非常有用。


在渲染器进程中通过 remote.require 加载模块时,会在 app 模块上触发 remote-require 事件。你可以针对事件调用 event.preventDefault()来阻止加载模块,其中事件作为第一个参数,WebContents 实例作为第二个参数,模块的名称作为第三个参数。WebContents 实例也会触发相同的事件,但此时的参数是事件和模块名称。对于这两种情况,你都可以通过设置 event.returnValue 来返回自定义值。


// Control `remote.require` from all WebContents:app.on('remote-require', function (event, webContents, requestedModuleName) {  // ...})
// Control `remote.require` from a specific WebContents instance:browserWin.webContents.on('remote-require', function (event, requestedModuleName) { // ...})
复制代码


同样,在调用 remote.getGlobal(name)时会触发 remote-get-global 事件。这与 remote-require 事件类似:调用 preventDefault()来防止返回 global,并设置 event.returnValue 来返回自定义值。


// Control `remote.getGlobal` from all WebContents:app.on('remote-get-global', function (event, webContents, requrestedGlobalName) {  // ...})
// Control `remote.getGlobal` from a specific WebContents instance:browserWin.webContents.on('remote-get-global', function (event, requestedGlobalName) { // ...})
复制代码


通过 JavaScript 访问“关于”面板


在 macOS 上,现在可以调用 app.showAboutPanel()来显示“关于”面板,就像单击通过{role:’about’}创建的菜单项一样。


控制 WebContents 的后台 Throttling


WebContents 实例提供了 setBackgroundThrottling(allowed)方法,在页面失去焦点时启用或禁用定时器和动画的限制。


重大变更


不再支持 macOS 10.9


Chromium 不再支持 macOS 10.9(OS X Mavericks),因此 Electron 4.0 及更高版本也不支持它。


单实例锁定


之前,要让应用程序成为单实例应用(确保任何时候都只有一个应用程序实例在运行),你可以使用 app.makeSingleInstance()方法。从 Electron 4.0 开始,你必须使用 app.requestSingleInstanceLock()。这个方法的返回值表示应用程序实例是否成功获得锁。如果它无法获得锁,你可以认为应用程序的另一个实例已经获得锁,并在运行当中,所以当前实例会立即退出。


win_delay_load_hook


在为 Windows 构建原生模块时,binding.gyp 模块中的 win_delay_load_hook 变量必须为 true(这是默认值)。如果这个 hook 不存在,那么原生模块将无法在 Windows 上加载,并显示错误消息,如“Cannot find module”。


被弃用的特性


Electron 5.0 将对以下特性做出重大变更,因此在 Electron 4.0 弃用它们。


对通过 nativeWindowOpen 打开的 Windows 禁用 Node.js 集成


从 Electron 5.0 开始,使用 nativeWindowOpen 选项打开的子窗口将始终禁用 Node.js 集成。


webPreferences 默认值


通过设置 webPreferences 选项创建新 BrowerWindow 时,webPreferences 的一些选项默认值发生变化:



Electron 4.0 仍将使用当前默认值,但如果你没有显式为它们提供值,将会看到弃用警告。


webContents.findInPage(text[, options])


medialCapitalAsWordStart 和 wordStart 选项已被弃用,因为它们在上游中已被移除。


App 反馈计划


我们在 Electron 3.0 开发过程中制定的 App 反馈计划无疑是成功的,所以我们在 4.0 的开发过程中也继续这样做。要了解有关应用反馈计划的更多信息并参与未来的测试版,请参阅我们的博文


后续的计划


在短期内,我们将继续专注于跟上主要组件的开发步伐,包括 Chromium、Node 和 V8。我们尽量不对具体发布日期做出承诺,不过,我们还是会计划大约每季度发布一次 Electron 的新主要版本。有关 Electron 版本控制的更多详细信息,请参阅我们的版本控制文档


有关即将发布的 Electron 版本的重大变更,请参阅我们的计划重大变更文档


英文原文


https://electronjs.org/blog/electron-4-0


2018 年 12 月 25 日 11:483679
用户头像

发布了 731 篇内容, 共 359.6 次阅读, 收获喜欢 1824 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

性能测试

考尔菲德

MySQL常用函数

Bruce Duan

mysql常用函数

架构师训练营第七周作业

Bruce Xiong

【week07】总结

chengjing

【week07】作业

chengjing

Kubernetes 1.0 发布刚六周年,IBM 却想招 12 年经验的

神经星星

程序员 Kubernetes 云原生 招聘 ibm

架构师第七周学习总结

小蚂蚁

架构师培训第七周练习

小蚂蚁

作业1

东哥

极客大学架构师训练营

秒懂云通信:如何用阿里云平台发短信?

巨侠说

埋点全解析,你最关心的可视化埋点在这里!

易观大数据

全国第一枚企业区块链电子印章诞生

CECBC区块链专委会

萝卜章 区块链印章 全流程上链 e签宝

性能压测工具

武鹏

架构师训练第七周

邵帅

计算机网络基础(九)---网络层-内部网关路由协议

书旅

计算机网络 网络协议 操作系统 计算机基础

JAVA已过气?中俄大佬对话告诉你俄罗斯最受欢迎的编程语言是什么!

华为云开发者社区

Java 开源 程序员 Lambda 编程语言

你只加了两行代码,为什么要花两天时间?

Yukun

程序员 debug bug

总结

ruettiger

《深度工作》学习笔记(1)

石云升

读书笔记 专注 深度工作

SpringBoot分布式验证码登录方案

Bruce Duan

验证码 Kaptcha

架构师训练第七周总结

邵帅

工作总结

Arthur

报销流程太慢太复杂?区块链技术引入票据系统效率翻一倍

CECBC区块链专委会

数据共享 电子票据 优化业务 可信体系

一周信创舆情观察(7.13~7.19)

统小信uos

数据库 舆情 芯片

第7章总结

武鹏

【DevCloud·敏捷智库】如何利用故事点做估算

华为云开发者社区

敏捷 敏捷开发 需求 故事 华为云

阿里官方 Redis 开发规范

Bruce Duan

redis Redis开发规范

通过双 key 来解决缓存并发问题

Bruce Duan

缓存穿透 缓存并发 双key解决缓存并发

架构师训练营作业-web性能压测示例代码

superman

极客大学架构师训练营

【研报下载】InfoQ《2020中国技术发展白皮书》重磅发布

InfoQ写作平台

写作平台 InfoQ 白皮书 研究报告 活动专区

第7周作业一

ruettiger

Electron 4.0稳定版发布,集成Node 10和Chromium 69-InfoQ