Electron 35.0.0
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
安裝它,或從我們的 發布網站 下載它。繼續閱讀以了解有關此版本的詳細資訊。
如果您有任何意見回饋,請在 Bluesky 或 Mastodon 上與我們分享,或加入我們的社群 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 互動。
堆疊變更
- Chromium
134.0.6998.44
- Node
22.14.0
- V8
13.5
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
上的 isDefault
和 status
屬性
這些屬性已從 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
上的 setPreloads
、getPreloads
引入了 registerPreloadScript
、unregisterPreloadScript
和 getPreloadScripts
作為已棄用方法的替代方案。這些新的 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'),
});
已棄用:WebContents
上 console-message
事件中的 level
、message
、line
和 sourceId
引數
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
現在是一個字串,可能的值為 info
、warning
、error
和 debug
。
行為已變更:WebRequestFilter
的 urls
屬性。
先前,空的 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 合成不再可停用。
終止對 32.x.y 的支援
根據專案的 支援政策,Electron 32.x.y 已達到支援終止日期。鼓勵開發人員和應用程式升級到較新版本的 Electron。
E35 (25 年 3 月) | E36 (25 年 4 月) | E37 (25 年 6 月) |
---|---|---|
35.x.y | 36.x.y | 37.x.y |
34.x.y | 35.x.y | 36.x.y |
33.x.y | 34.x.y | 35.x.y |
下一步
短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。
您可以在此處找到 Electron 的公開時程表。
有關未來變更的更多資訊,請參閱 計畫的重大變更 頁面。