跳到主要內容

Electron 14.0.0

·6 分鐘閱讀

Electron 14.0.0 已經發佈!它包含 Chromium 93 和 V8 9.3 的升級。我們新增了數個 API 更新、錯誤修正和一般改進。請閱讀以下內容以瞭解更多詳細資訊!


Electron 團隊很高興宣布 Electron 14.0.0 的發佈!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的發佈網站下載它。繼續閱讀以瞭解關於此版本的詳細資訊,並請分享您有的任何意見回饋!

重大變更

Electron 發佈節奏變更

從 2021 年 9 月的 Electron 15 開始,Electron 將每 8 週發佈一個新的主要穩定版本。您可以在此處閱讀完整詳細資訊。Electron 15 將於 2021 年 9 月 1 日開始 Beta 測試,並於 2021 年 9 月 21 日穩定發佈。您可以在此處找到 Electron 的公開時程表。此外,Electron 將把支援的版本從最新的三個版本變更為最新的四個版本,直到 2022 年 5 月。請參閱我們的版本控制文件,以取得關於 Electron 中版本控制的更多詳細資訊。

堆疊變更

重點功能

  • 預設變更:nativeWindowOpen 現在預設為 true(請參閱文件)
  • 子視窗不再從其父視窗繼承 BrowserWindow 建構選項。#28550
  • 新增了新的 session.storagePath API,以取得磁碟上特定工作階段資料的路徑。#28665
  • 新增了 process.contextId,供 @electron/remote 使用。#28007
  • Electron Fuse 後方新增了實驗性 Cookie 加密支援。#29492

請參閱14.0.0 發行說明,以取得新功能和變更的完整清單。

重大變更

以下是在 Electron 14 中引入的重大變更。關於這些變更和未來變更的更多資訊,請參閱計畫的重大變更頁面。

已移除:app.allowRendererProcessReuse

app.allowRendererProcessReuse 屬性已移除,這是我們更緊密地與 Chromium 的程序模型對齊,以實現安全性、效能和可維護性計畫的一部分。

如需更多詳細資訊,請參閱#18397

已移除:瀏覽器視窗親和性

在建構新的 BrowserWindow 時,affinity 選項已移除,這是我們更緊密地與 Chromium 的程序模型對齊,以實現安全性、效能和可維護性計畫的一部分。

如需更多詳細資訊,請參閱#18397

API 已變更:window.open()

選用參數 frameName 不再設定視窗的標題。此行為現在遵循 原生文件中針對 windowName 參數的規格描述。

如果您使用此參數設定視窗的標題,您可以改用 win.setTitle(title) 方法。

已移除:worldSafeExecuteJavaScript

worldSafeExecuteJavaScript 已移除,沒有替代方案。請確保您的程式碼在此屬性啟用時可運作。自 Electron 12 以來,它已預設啟用。

如果您使用 webFrame.executeJavaScriptwebFrame.executeJavaScriptInIsolatedWorld,您將會受到此變更的影響。您將需要確保這些方法傳回的值受 Context Bridge API 支援,因為這些方法使用相同的值傳遞語意。

預設變更:nativeWindowOpen 預設為 true

在 Electron 14 之前,window.open 預設會被墊片化以使用 BrowserWindowProxy。這表示 window.open('about:blank') 無法運作以同步開啟可編寫腳本的子視窗,以及其他不相容性。nativeWindowOpen 不再是實驗性的,現在是預設值。

請參閱 Electron 中的 window.open 文件,以取得更多詳細資訊。

已移除:BrowserWindowConstructorOptions 從父視窗繼承

在 Electron 14 之前,使用 window.open 開啟的視窗會從其父視窗繼承 BrowserWindow 建構子選項,例如 transparentresizable。從 Electron 14 開始,此行為已移除,視窗將不會從其父視窗繼承任何 BrowserWindow 建構子選項。

相反地,請使用 setWindowOpenHandler 明確設定新視窗的選項

webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});

已移除:additionalFeatures

WebContents 的 new-windowdid-create-window 事件中已棄用的 additionalFeatures 屬性已移除。由於 new-window 使用位置引數,因此引數仍然存在,但將永遠是空陣列 []。(注意:new-window 事件本身已棄用,並已由 setWindowOpenHandler 取代。)視窗功能中的裸金鑰現在將以值為 true 的金鑰形式出現在選項物件中。

// Removed in Electron 14
// Triggered by window.open('...', '', 'my-key')
webContents.on('did-create-window', (window, details) => {
if (details.additionalFeatures.includes('my-key')) {
// ...
}
});

// Replace with
webContents.on('did-create-window', (window, details) => {
if (details.options['my-key']) {
// ...
}
});

已移除:remote 模組

在 Electron 12 中已棄用,remote 模組現在已從 Electron 本身移除,並提取到一個單獨的套件 @electron/remote 中。@electron/remote 模組橋接從主程序到渲染器程序的 JavaScript 物件。這可讓您存取僅限主程序的物件,如同它們在渲染器程序中可用一樣。這是 remote 模組的直接替代品。請參閱模組的 readme,以取得遷移指示和參考。

API 變更

  • 新增了 BrowserWindow.isFocusable() 方法,以判斷視窗是否可聚焦。#28642
  • 新增了 WebFrameMain.visibilityState 實例屬性。#28706
  • dispositionreferrerpostBody 新增至傳遞給使用 setWindowOpenHandler 註冊的視窗開啟處理常式的詳細資訊物件。#28518
  • 新增了 process.contextId,供 @electron/remote 使用。#28007
  • Electron Fuse 後方新增了實驗性 Cookie 加密支援。#29492
  • webRequest 監聽器詳細資訊新增了遺失的 resourceType 轉換:fontpingcspReportmediawebSocket#30050
  • 新增了新的 session.storagePath API,以取得磁碟上特定工作階段資料的路徑。#28665
  • 在 macOS 上新增了對 Windows 控制項覆疊的支援。#29986
  • 新增了使用 --log-file=.../path/to/file.log 將 Chromium 日誌導向檔案的支援。此外,現在可以透過在第一個 JS tick 期間附加命令列開關,從 JavaScript 啟用日誌記錄。#29963
  • 在節點加密中新增了對 des-ede3 密碼的支援。#27897
  • 新增了 ContextBridgeMutability 功能,允許變更內容橋接物件。#27348

已移除/已棄用變更

以下 API 已移除或現在已棄用

  • remote 模組在 Electron 12 中棄用後已移除。#25734
  • 子視窗不再從其父視窗繼承 BrowserWindow 建構選項。#28550
  • new-windowdid-create-window WebContents 事件中移除已棄用的 additionalFeatures 屬性。#28548
  • 移除了已棄用的 app.allowRendererProcessReuse 和 BrowserWindow affinity 選項。#26874
  • uploadToServer 為 false 時,crashReporter.startsubmitURL 選項不再是必要引數。#28105

終止對 11.x.y 的支援

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

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。雖然我們謹慎地不對發佈日期做出承諾,但我們的計畫是約每季發佈包含這些元件新版本的 Electron 主要版本。

如需關於即將推出的 Electron 版本中計畫的重大變更的資訊,請參閱我們的計畫的重大變更