Electron 14.0.0
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 中版本控制的更多詳細資訊。
堆疊變更
- Chromium
93
- Node.js
14.17.0
- V8
9.3
重點功能
- 預設變更:
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.executeJavaScript
或 webFrame.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 建構子選項,例如 transparent
和 resizable
。從 Electron 14 開始,此行為已移除,視窗將不會從其父視窗繼承任何 BrowserWindow 建構子選項。
相反地,請使用 setWindowOpenHandler
明確設定新視窗的選項
webContents.setWindowOpenHandler((details) => {
return {
action: 'allow',
overrideBrowserWindowOptions: {
// ...
},
};
});
已移除:additionalFeatures
WebContents 的 new-window
和 did-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 - 將
disposition
、referrer
和postBody
新增至傳遞給使用setWindowOpenHandler
註冊的視窗開啟處理常式的詳細資訊物件。#28518 - 新增了
process.contextId
,供@electron/remote
使用。#28007 - 在 Electron Fuse 後方新增了實驗性 Cookie 加密支援。#29492
- 為
webRequest
監聽器詳細資訊新增了遺失的resourceType
轉換:font
、ping
、cspReport
、media
、webSocket
。#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-window
和did-create-window
WebContents 事件中移除已棄用的additionalFeatures
屬性。#28548 - 移除了已棄用的
app.allowRendererProcessReuse
和 BrowserWindowaffinity
選項。#26874 - 當
uploadToServer
為 false 時,crashReporter.start
的submitURL
選項不再是必要引數。#28105
終止對 11.x.y 的支援
根據專案的支援政策,Electron 11.x.y 已達到終止支援。鼓勵開發人員和應用程式升級到較新版本的 Electron。
下一步
在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。雖然我們謹慎地不對發佈日期做出承諾,但我們的計畫是約每季發佈包含這些元件新版本的 Electron 主要版本。
如需關於即將推出的 Electron 版本中計畫的重大變更的資訊,請參閱我們的計畫的重大變更。