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 的 issue tracker 中回報。
重點變更
堆疊變更
- 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 支援 (在此處閱讀更多資訊)。
Windows 7/8/8.1 將不會在 Electron 23 及更高版本的主要版本中受到支援。
其他重點變更
- 新增了在 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 (May'22) | E20 (Aug'22) | E21 (Sep'22) | E22 (Nov'22) | E23 (Jan'23) |
---|---|---|---|---|
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.js 和 V8) 的開發進度。
您可以在 此處找到 Electron 的公開時程表。
有關未來變更的更多資訊可以在 計劃的重大變更 頁面上找到。