Electron 22.0.0
Electron 22.0.0 已發布! 它包含新的實用程式處理程序 API、Windows 7/8/8.1 支援的更新,以及升級到 Chromium 108
、V8 10.8
和 Node.js 16.17.1
。 閱讀以下內容以了解更多詳細資訊!
Electron 團隊很高興宣布發布 Electron 22.0.0! 您可以使用 npm 透過 npm install electron@latest
安裝它,或從我們的發行版本網站下載它。 繼續閱讀以了解有關此版本的詳細資訊。
如果您有任何意見回饋,請在 Twitter 上與我們分享,或加入我們的社群Discord! 錯誤和功能請求可以在 Electron 的問題追蹤器中回報。
重大變更
堆疊變更
- Chromium
108
- Node.js
16.17.1
- V8
10.8
重點功能
UtilityProcess API #36089
新的 UtilityProcess
主處理程序模組允許建立一個輕量級的 Chromium 子處理程序,僅具有 Node.js 整合,同時還允許使用 MessageChannel
與沙箱化的渲染器進行通訊。 該 API 的設計基於 Node.js child_process.fork
,以便於轉換,主要區別在於進入點 modulePath
必須來自封裝的應用程式內部,以便僅允許載入受信任的腳本。 此外,該模組預設會阻止與渲染器建立通訊通道,從而維護主處理程序是應用程式中唯一受信任處理程序的合約。
您可以在此處的文件中閱讀有關新的 UtilityProcess API 的更多資訊。
Windows 7/8/8.1 支援更新
2023/02/16:關於 Windows Server 2012 支援的更新
上個月,Google 宣布Chrome 109 將繼續接收 Windows Server 2012 和 Windows Server 2012 R2 的重要安全性修復,直到 2023 年 10 月 10 日。 因此,Electron 22 (Chromium 108) 計劃的生命週期結束日期將從 2023 年 5 月 30 日延長至 2023 年 10 月 10 日。 Electron 團隊將繼續將此計劃中的任何安全性修復回溯移植到 Electron 22,直到 2023 年 10 月 10 日。
請注意,我們不會對 Windows 7/8/8.1 進行額外的安全性修復。 此外,正如先前宣布的那樣,Electron 23 (Chromium 110) 將僅在 Windows 10 及以上版本上執行。
Electron 22 將是最後一個支援 Windows 7/8/8.1 的 Electron 主要版本。 Electron 遵循計劃的 Chromium 淘汰原則,該原則將在 Chromium 109 中淘汰 Windows 7/8/8.1 支援 (在此處閱讀更多資訊)。
Electron 23 及更高版本的主要版本將不支援 Windows 7/8/8.1。
其他重點變更
- 在 Linux 和 Windows 上新增了對 Web Bluetooth pin 配對的支援。#35416
- 新增
LoadBrowserProcessSpecificV8Snapshot
作為新的熔斷器,讓主/瀏覽器進程可以從browser_v8_context_snapshot.bin
檔案載入其 v8 快照。任何其他進程將使用與今天相同的路徑。#35266 - 新增
WebContents.opener
來存取視窗開啟器,以及webContents.fromFrame(frame)
來取得對應於 WebFrameMain 實例的 WebContents。#35140 - 透過新的會話處理器
ses.setDisplayMediaRequestHandler
,新增對navigator.mediaDevices.getDisplayMedia
的支援。#30702
重大 API 變更
以下是在 Electron 22 中引入的重大變更。您可以在 計劃的重大變更頁面上閱讀更多關於這些變更和未來變更的資訊。
已棄用:webContents.incrementCapturerCount(stayHidden, stayAwake)
webContents.incrementCapturerCount(stayHidden, stayAwake)
已被棄用。現在當頁面擷取完成時,會由 webContents.capturePage
自動處理。
const w = new BrowserWindow({ show: false })
- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })
+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })
已棄用:webContents.decrementCapturerCount(stayHidden, stayAwake)
webContents.decrementCapturerCount(stayHidden, stayAwake)
已被棄用。現在當頁面擷取完成時,會由 webContents.capturePage
自動處理。
const w = new BrowserWindow({ show: false })
- w.webContents.incrementCapturerCount()
- w.capturePage().then(image => {
- console.log(image.toDataURL())
- w.webContents.decrementCapturerCount()
- })
+ w.capturePage().then(image => {
+ console.log(image.toDataURL())
+ })
已移除:WebContents new-window
事件
WebContents 的 new-window
事件已移除。它已被 webContents.setWindowOpenHandler()
取代。
- webContents.on('new-window', (event) => {
- event.preventDefault()
- })
+ webContents.setWindowOpenHandler((details) => {
+ return { action: 'deny' }
+ })
已棄用:BrowserWindow scroll-touch-*
事件
BrowserWindow 上的 scroll-touch-begin
、scroll-touch-end
和 scroll-touch-edge
事件已棄用。請改用 WebContents 上新提供的 input-event
事件。
// Deprecated
- win.on('scroll-touch-begin', scrollTouchBegin)
- win.on('scroll-touch-edge', scrollTouchEdge)
- win.on('scroll-touch-end', scrollTouchEnd)
// Replace with
+ win.webContents.on('input-event', (_, event) => {
+ if (event.type === 'gestureScrollBegin') {
+ scrollTouchBegin()
+ } else if (event.type === 'gestureScrollUpdate') {
+ scrollTouchEdge()
+ } else if (event.type === 'gestureScrollEnd') {
+ scrollTouchEnd()
+ }
+ })
19.x.y 版本終止支援
根據專案的支援政策,Electron 19.x.y 已終止支援。建議開發人員和應用程式升級到較新版本的 Electron。
E19 (22年5月) | E20 (22年8月) | E21 (22年9月) | E22 (22年11月) | E23 (23年1月) |
---|---|---|---|---|
19.x.y | 20.x.y | 21.x.y | 22.x.y | 23.x.y |
18.x.y | 19.x.y | 20.x.y | 21.x.y | 22.x.y |
17.x.y | 18.x.y | 19.x.y | 20.x.y | 21.x.y |
接下來是什麼
Electron 專案將在 2022 年 12 月暫停,並於 2023 年 1 月恢復。更多資訊請參閱十二月關閉部落格文章。
短期內,您可以預期團隊將繼續專注於跟上組成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。
您可以在這裡找到Electron 的公開時間表。
您可以在計劃的重大變更頁面上找到更多關於未來變更的資訊。