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 名稱,例如 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