跳到主要內容

Electron 22.0.0

·5 分鐘閱讀

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 的問題追蹤器中回報。

重大變更

堆疊變更

重點功能

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-beginscroll-touch-endscroll-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.y20.x.y21.x.y22.x.y23.x.y
18.x.y19.x.y20.x.y21.x.y22.x.y
17.x.y18.x.y19.x.y20.x.y21.x.y

接下來是什麼

Electron 專案將在 2022 年 12 月暫停,並於 2023 年 1 月恢復。更多資訊請參閱十二月關閉部落格文章

短期內,您可以預期團隊將繼續專注於跟上組成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

您可以在計劃的重大變更頁面上找到更多關於未來變更的資訊。