跳到主要內容

Electron 35.0.0

·5 分鐘閱讀

Electron 35.0.0 已發布!它包含 Chromium 134.0.6998.44、V8 13.5 和 Node 22.14.0 的升級。


Electron 團隊很高興宣布 Electron 35.0.0 的發布!您可以透過 npm 使用 npm install electron@latest 安裝它,或從我們的 發布網站 下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何意見回饋,請在 BlueskyMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器 中回報。

重大變更

Service Worker 預先載入腳本,以改進擴充功能支援

最初由 RFC #8 中的 @samuelmaddock 提出,Electron 35 新增了將預先載入腳本附加到 Service Worker 的能力。隨著 Chrome 的 Manifest V3 擴充功能將大量工作路由到 擴充功能 Service Worker,此功能填補了 Electron 對現代 Chrome 擴充功能支援的空白。

當在 Session 層級以程式設計方式註冊預先載入腳本時,您現在可以使用 ses.registerPreloadScript(script) API 將其明確應用於 Service Worker 環境。

主程序
// Add our preload realm script to the session.
session.defaultSession.registerPreloadScript({
// Our script should only run in service worker preload realms.
type: 'service-worker',
// The absolute path to the script.
script: path.join(__dirname, 'extension-sw-preload.js'),
});

此外,現在 Service Worker 和其附加的預先載入腳本之間可以透過 ServiceWorkerMain.ipc 類別進行 IPC 通訊。預先載入腳本仍將使用 ipcRenderer 模組與其 Service Worker 通訊。請參閱原始 RFC 以了解更多詳細資訊。

此功能之前有許多其他變更為其奠定了基礎

  • #45329 重新設計了 Session 模組的預先載入 API,以支援註冊和取消註冊個別的預先載入腳本。
  • #45229 新增了實驗性的 contextBridge.executeInMainWorld(executionScript) 腳本,以在主世界中透過 context bridge 評估 JavaScript。
  • #45341 新增了 ServiceWorkerMain 類別,以在主程序中與 Service Worker 互動。

堆疊變更

Electron 35 將 Chromium 從 132.0.6834.83 升級到 134.0.6998.44,Node 從 20.18.1 升級到 22.14.0,以及 V8 從 13.2 升級到 13.5

新功能

  • Info.plist 中新增了 NSPrefersDisplaySafeAreaCompatibilityMode = false,以從應用程式選項中移除「縮放以適合內建相機下方」。#45357 (也包含在 v34.1.0 中)
  • 新增了 ServiceWorkerMain 類別,以在主程序中與 service worker 互動。#45341
    • ServiceWorkers 上新增了 running-status-changed 事件,以指示 service worker 的執行狀態何時變更。
    • ServiceWorkers 上新增了 startWorkerForScope,以啟動可能先前已停止的 worker。
  • 新增了實驗性的 contextBridge.executeInMainWorld,以安全地跨世界邊界執行程式碼。#45330
  • 'console-message' 事件中新增了 frame#43617
  • 在 Windows 上新增了 query-session-end 事件並改進了 session-end 事件。#44598
  • 新增了 view.getVisible()#45409
  • 新增了 webContents.navigationHistory.restore(index, entries) API,允許還原導覽歷史記錄。#45583
  • BrowserWindow.setVibrancy 新增了可選的動畫參數。#35987
  • 新增了對 document.executeCommand("paste") 的權限支援。#45471 (也包含在 v34.1.0 中)
  • 在 Windows 上為 roundedCorners BrowserWindow 建構函式選項新增了支援。#45740 (也包含在 v34.3.0 中)
  • 新增了對 service worker 預先載入腳本的支援。#45408
  • 支援 Portal 的 globalShortcuts。必須使用 --enable-features=GlobalShortcutsPortal 執行 Electron 才能使此功能運作。#45297

重大變更

已移除:PrinterInfo 上的 isDefaultstatus 屬性

這些屬性已從 PrinterInfo 物件中移除,因為它們已從上游 Chromium 中移除。

已棄用:session.serviceWorkers 上的 getFromVersionID

session.serviceWorkers.fromVersionID(versionId) API 已被棄用,改為使用 session.serviceWorkers.getInfoFromVersionID(versionId)。此變更旨在更清楚地說明傳回的物件,並引入了 session.serviceWorkers.getWorkerFromVersionID(versionId) API。

// Deprecated
session.serviceWorkers.fromVersionID(versionId);

// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId);

已棄用:Session 上的 setPreloadsgetPreloads

引入了 registerPreloadScriptunregisterPreloadScriptgetPreloadScripts 作為已棄用方法的替代方案。這些新的 API 允許第三方程式庫註冊預先載入腳本,而無需替換現有的腳本。此外,新的 type 選項允許超出 frame 的其他預先載入目標。

// Deprecated
session.setPreloads([path.join(__dirname, 'preload.js')]);

// Replace with:
session.registerPreloadScript({
type: 'frame',
id: 'app-preload',
filePath: path.join(__dirname, 'preload.js'),
});

已棄用:WebContentsconsole-message 事件中的 levelmessagelinesourceId 引數

WebContents 上的 console-message 事件已更新,以提供有關 Event 引數的詳細資訊。

// Deprecated
webContents.on(
'console-message',
(event, level, message, line, sourceId) => {},
);

// Replace with:
webContents.on(
'console-message',
({ level, message, lineNumber, sourceId, frame }) => {},
);

此外,level 現在是一個字串,可能的值為 infowarningerrordebug

行為已變更:WebRequestFilterurls 屬性。

先前,空的 urls 陣列被解釋為包含所有 URL。為了明確包含所有 URL,開發人員現在應使用 <all_urls> 模式,這是一個 指定的 URL 模式,可比對每個可能的 URL。此變更釐清了意圖,並確保更可預測的行為。

// Deprecated
const deprecatedFilter = {
urls: [],
};

// Replace with
const newFilter = {
urls: ['<all_urls>'],
};

已棄用:systemPreferences.isAeroGlassEnabled()

systemPreferences.isAeroGlassEnabled() 函式已被棄用,沒有替代方案。自 Electron 23 以來,它一直傳回 true,Electron 23 僅支援 Windows 10+,在 Windows 10+ 中,DWM 合成不再可停用。

https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw#disabling-dwm-composition-windows7-and-earlier

終止對 32.x.y 的支援

根據專案的 支援政策,Electron 32.x.y 已達到支援終止日期。鼓勵開發人員和應用程式升級到較新版本的 Electron。

E35 (25 年 3 月)E36 (25 年 4 月)E37 (25 年 6 月)
35.x.y36.x.y37.x.y
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y

下一步

短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在此處找到 Electron 的公開時程表

有關未來變更的更多資訊,請參閱 計畫的重大變更 頁面。