Electron 1.0 中即将到来的 API 更改
自 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,例如 Url
到 URL
,但是 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