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 日開始測試版,並於 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 - 新增了
@electron/remote
使用的process.contextId
。#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
,您將會受到此變更的影響。您將需要確保這些方法傳回的值受 內容橋接 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 - 在傳遞給以
setWindowOpenHandler
註冊的視窗開啟處理程序的詳細資訊物件中,新增了disposition
、referrer
和postBody
。#28518 - 新增了
@electron/remote
使用的process.contextId
。#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 刻度期間附加命令列參數來從 JavaScript 啟用記錄。#29963 - 在節點加密中新增對 des-ede3 密碼的支援。#27897
- 新增
ContextBridgeMutability
功能,允許修改內容橋接物件。#27348
已移除/已棄用變更
已移除或現在已棄用以下 API
- 在 Electron 12 中棄用後,
remote
模組已移除。#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 版本中計畫的重大變更的資訊,請參閱我們的計畫的重大變更。