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

admin 0
Electron 4.0 稳定版发布,集成 Node 10 和 Chromium 69-第1张图片-Air主题演示站

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 标记禁用该模块:

// BrowserWindow    new 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) {  // ...})

重大变更

不再支持 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 稳定版发布,集成 Node 10 和 Chromium 69-第2张图片-Air主题演示站

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

webContents.findInPage(text[, options])

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

App 反馈计划

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

后续的计划

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

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


标签:

发表评论 (已有0条评论)