Electron 1.0 即将进行的 API 更改
自 Electron 诞生以来,追溯到它还被称为 Atom-Shell 的时候,我们一直在尝试为 Chromium 的 content 模块和原生 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