跳至主要內容

42 篇標記為「發布」的文章

關於新 Electron 發布版本的部落格文章

查看所有標籤

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

Electron 的新功能

·閱讀時間 2 分鐘

最近有一些關於 Electron 的有趣更新和演講,以下是匯總。


來源

v0.32.0 起,Electron 現在已更新至 Chrome 45。其他更新包括...

更完善的文件

new docs

我們已重新建構和標準化文件,使其外觀和閱讀體驗都更好。還有社群貢獻的文件翻譯版本,例如日文和韓文。

相關的提取請求:electron/electron#2028electron/electron#2533electron/electron#2557electron/electron#2709electron/electron#2725electron/electron#2698electron/electron#2649

Node.js 4.1.0

v0.33.0 版本起,Electron 內建 Node.js 4.1.0。

相關的 Pull Request:electron/electron#2817

node-pre-gyp

現在從原始碼建置時,可以針對 Electron 編譯依賴 node-pre-gyp 的模組。

相關的 Pull Request:mapbox/node-pre-gyp#175

ARM 支援

Electron 現在提供在 ARMv7 Linux 上的建置版本。它可以在如 Chromebook 和 Raspberry Pi 2 等常見平台上執行。

相關議題:atom/libchromiumcontent#138, electron/electron#2094, electron/electron#366

Yosemite 風格的無邊框視窗

frameless window

@jaanus 提交的 patch 已合併,此 patch 允許像其他內建的 OS X 應用程式一樣,在 OS X Yosemite 或更新版本上建立帶有系統交通號誌的無邊框視窗。

相關的 Pull Request:electron/electron#2776

Google Summer of Code 列印支援

在 Google Summer of Code 之後,我們合併了 @hokein 的 patch,以改進列印支援,並新增將頁面列印成 PDF 檔案的功能。

相關議題:electron/electron#2677, electron/electron#1935, electron/electron#1532, electron/electron#805, electron/electron#1669, electron/electron#1835

Atom

Atom 現在已升級到 Electron v0.30.6,執行 Chrome 44。升級到 v0.33.0 的工作正在進行中,詳見 atom/atom#8779

演講

GitHub 的 Amy PalamountainNordic.js 的演講中,精彩地介紹了 Electron。她也創建了 electron-accelerator 函式庫。

Amy Palomountain 的「使用 Electron 建置原生應用程式」

Atom 團隊的 Ben Ogle 也在 YAPC Asia 上發表了關於 Electron 的演講。

Ben Ogle 的「使用 Web 技術建置桌面應用程式」

Atom 團隊成員 Kevin Sawicki 和其他人在最近的 Bay Area Electron User Group 聚會中發表了關於 Electron 的演講。 影片 已發佈,以下是一些範例:

Kevin Sawicki 的「Electron 的歷史」

Ben Gotow 的「讓 Web 應用程式感覺像原生應用程式」