跳至主要内容

Electron 1.0 中即将发生的 API 更改

·阅读时长 4 分钟

从 Electron 的一开始,也就是它曾经被称为 Atom-Shell 的时候,我们就一直在尝试为 Chromium 的内容模块和原生 GUI 组件提供一个不错的跨平台 JavaScript API。这些 API 最初的产生非常自然,随着时间的推移,我们进行了一些更改以改进最初的设计。


现在,随着 Electron 准备发布 1.0 版本,我们希望借此机会进行更改,以解决最后一些令人烦恼的 API 细节。下面描述的更改包含在 **0.35.x** 中,旧的 API 会报告弃用警告,以便您能够及时了解未来的 1.0 版本。Electron 1.0 版本将在几个月后发布,因此在这些更改成为重大更改之前,您还有时间。

弃用警告

默认情况下,如果您使用的是已弃用的 API,则会显示警告。要关闭它们,您可以将 process.noDeprecation 设置为 true。要跟踪已弃用 API 用法的来源,您可以将 process.throwDeprecation 设置为 true 以抛出异常而不是打印警告,或者将 process.traceDeprecation 设置为 true 以打印弃用的跟踪信息。

使用内置模块的新方法

内置模块现在被分组到一个模块中,而不是分成独立的模块,因此您可以使用它们 避免与其他模块发生冲突

var app = require('electron').app;
var BrowserWindow = require('electron').BrowserWindow;

旧的 require('app') 方法仍然支持向后兼容,但您也可以将其关闭。

require('electron').hideInternalModules();
require('app'); // throws error.

一种更简单的使用 remote 模块的方法

由于使用内置模块的方式发生了变化,因此我们使在渲染器进程中使用主进程端模块变得更加容易。您现在只需访问 remote 的属性即可使用它们。

// New way.
var app = require('electron').remote.app;
var BrowserWindow = require('electron').remote.BrowserWindow;

无需使用冗长的 require 链

// Old way.
var app = require('electron').remote.require('app');
var BrowserWindow = require('electron').remote.require('BrowserWindow');

拆分 ipc 模块

ipc 模块存在于主进程和渲染器进程中,并且 API 在每一侧都不同,这对于新用户来说非常令人困惑。为了避免混淆,我们已将主进程中的模块重命名为 ipcMain,将渲染器进程中的模块重命名为 ipcRenderer

// In main process.
var ipcMain = require('electron').ipcMain;
// In renderer process.
var ipcRenderer = require('electron').ipcRenderer;

对于 ipcRenderer 模块,在接收消息时添加了一个额外的 event 对象,以匹配 ipcMain 模块中消息的处理方式。

ipcRenderer.on('message', function (event) {
console.log(event);
});

标准化 BrowserWindow 选项

BrowserWindow 选项根据其他 API 的选项具有不同的样式,并且由于名称中的 - 而在 JavaScript 中使用起来有点困难。现在它们已标准化为传统的 JavaScript 名称。

new BrowserWindow({ minWidth: 800, minHeight: 600 });

遵循 DOM 的 API 名称约定

Electron 中的 API 名称过去习惯于对所有 API 名称使用 camelCase,例如 UrlURL,但 DOM 有自己的约定,它们更喜欢 URL 而不是 Url,同时使用 Id 而不是 ID。我们已对以下 API 重命名以匹配 DOM 的样式。

  • Url 重命名为 URL
  • Csp 重命名为 CSP

由于这些更改,在您的应用程序中使用 Electron v0.35.0 时,您会注意到很多弃用警告。解决这些问题的一个简单方法是将所有 Url 实例替换为 URL

Tray 的事件名称进行更改

Tray 事件名称的样式与其他模块略有不同,因此已进行重命名以使其与其他模块匹配。

  • clicked 重命名为 click
  • double-clicked 重命名为 double-click
  • right-clicked 重命名为 right-click