跳到主要內容

Electron 8.0.0

·6 min read

Electron 8.0.0 已發布!它包含 Chromium 80、V8 8.0 和 Node.js 12.13.0 的升級。我們新增了 Chrome 的內建拼字檢查器,以及更多功能!


Electron 團隊很高興宣布 Electron 8.0.0 的發布!您可以透過 npm 使用 npm install electron@latest 安裝它,或從我們的發行版本網站下載。此版本包含許多升級、修復和新功能。我們迫不及待想看看您會用它們構建什麼!請繼續閱讀以了解有關此版本的詳細資訊,並請分享您的任何意見回饋!

重點變更

堆疊變更

重點功能

  • 實作了 Chrome 內建拼字檢查器功能的使用。請參閱 #20692#21266 以了解更多詳細資訊。
  • IPC 通訊現在使用 v8 的結構化複製演算法。這比現有的邏輯更快、功能更豐富且更不易出錯,並為大型緩衝區和複雜物件帶來 2 倍的效能提升。小型訊息的延遲沒有顯著影響。請參閱 #20214 以了解更多詳細資訊。

請參閱 8.0.0 發行說明 以取得新功能和變更的完整列表。

重大變更

  • 在內容感知模組的棄用警告中顯示模組名稱。 #21952
    • 這是為了未來要求在渲染器進程中載入的原生 Node 模組必須是 N-API 或內容感知模組的持續工作。完整資訊和建議的時程表詳述於 此 issue 中。
  • 透過 IPC 發送的值現在使用結構化複製演算法序列化。 #20214
  • 由於缺乏維護人員來處理此功能,螢幕外渲染目前已停用。它在 Chromium 升級期間損壞,隨後被停用。 #20772

有關這些變更和未來變更的更多資訊,請參閱計畫中的重大變更頁面。

API 變更

  • `app` API 變更
    • 新增了 `app.getApplicationNameForProtocol(url)`。 #20399
    • 在 Windows 上新增了 `app.showAboutPanel()` 和 `app.setAboutPanelOptions(options)` 支援。 #19420
  • `BrowserWindow` API 變更
    • 更新文件以註明 BrowserWindow 選項 `hasShadow` 在所有平台上都可用 #20038
    • 在 BrowserWindow 選項中新增了 `trafficLightPosition` 選項,以允許自訂交通號誌燈按鈕的位置。 #21781
    • 為 BrowserWindow 新增了 `accessibleTitle` 選項,用於設定可存取的視窗標題 #19698
    • `BrowserWindow.fromWebContents()` 現在可以傳回 null #19983
    • 新增了 `BrowserWindow.getMediaSourceId()` 和 `BrowserWindow.moveAbove(mediaSourceId)`。 #18926
    • 在 macOS 上新增了對 `will-move` 事件的支援。 #19641
  • 記錄了先前未記錄的 `crashReporter.getCrashesDirectory()`。 #20417
  • `dialog` API 變更
    • 在 `dialog.showOpenDialog` 和 `dialog.showOpenDialogSync` 中新增了 `dontAddToRecent` 屬性,以防止文件在 Windows 的開啟對話方塊中被新增到最近的文件。 #19669
    • 為 `dialog.showSaveDialog` 和 `dialog.showSaveDialogSync` 新增了屬性自訂功能。 #19672
  • `Notification` API 變更
    • 新增了 `timeoutType` 選項,允許 Linux/Windows 使用者設定通知逾時類型。 #20153
    • 新增了 `urgency` 選項,以設定 Linux 通知的緊急程度。 #20152
  • `session` API 變更
    • 更新了關於 `session.setProxy(config)` 和 `session.setCertificateVerifyProc(proc)` 的文件,以註明可選選項。 #19604
    • 新增了 `session.downloadURL(url)`,以允許在沒有 BrowserWindow 的情況下觸發下載。 #19889
    • 透過 `session.preconnect(options)` 和 `preconnect` 事件新增了對 HTTP preconnect 資源提示的支援。 #18671
    • 新增了 `session.addWordToSpellCheckerDictionary`,以允許在字典中新增自訂單字 #21297
  • 在 macOS 上的 `shell.moveItemToTrash(fullPath[, deleteOnFail])` 中新增了選項,以指定當 moveItemToTrash 失敗時會發生什麼事。 #19700
  • `systemPreferences` API 變更
    • 更新了 macOS 的 `systemPreferences.getColor(color)` 文件。 #20611
    • 為 `systemPreferences.getMediaAccessStatus()` 新增了 `screen` 媒體類型。 #20764
  • 新增了 `nativeTheme.themeSource`,以允許應用程式覆寫 Chromium 和作業系統的主題選擇。 #19960
  • TouchBar API 變更
    • 為 `TouchBarButton` 和 `TouchBarLabel` 新增了 `accessibilityLabel` 屬性,以改善 TouchBarButton/TouchBarLabel 的可存取性。 #20454
    • 更新了 TouchBar 相關文件 #19444
  • `tray` API 變更
    • 為 `tray.displayBalloon()` 新增了新選項:`iconType`、`largeIcon`、`noSound` 和 `respectQuietTime`。 #19544
    • 新增了 tray.removeBalloon(),它會移除已顯示的氣球通知。 #19547
    • 新增了 tray.focus(),它會將焦點返回到任務欄通知區域。功能:新增 tray.focus() #19548
  • `webContents` API 變更
    • 新增了 `contents.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture])`,以在 webContents API 上公開 executeJavaScriptInIsolatedWorld。 #21190
    • 新增了捕獲隱藏 webContents 的方法。 #21679
    • 在 `webContents.print([options], [callback])` 中新增了選項,以啟用列印頁面標頭和頁尾的自訂。 #19688
    • 新增了透過 `webContents.getAllSharedWorkers()` 和 `webContents.inspectSharedWorkerById(workerId)` 檢查特定共享 worker 的能力。 #20389
    • 在 WebContents.printToPDF() 中新增了對 `fitToPageEnabled` 和 `scaleFactor` 選項的支援。 #20436
  • 更新了 `webview.printToPDF` 文件,以指出傳回類型現在是 Uint8Array。 #20505

已棄用的 API

以下 API 現在已棄用

  • 在下一個主要發行版本中移除之前,已棄用 `BrowserWindow.setVisibleOnAllWorkspaces` 內無效的 `visibleOnFullScreen` 選項。 #21732
  • 已棄用 macOS 的 `systemPreferences.getColor(color)` 上的 `alternate-selected-control-text`。 #20611
  • 由於 Chromium 移除了此功能,因此已棄用 `webContents`、`webFrame` 和 `<webview> Tag` 上的 `setLayoutZoomLevelLimits`。 #21296
  • `app.allowRendererProcessReuse` 的預設值 `false` 現在已棄用。 #21287
  • 已棄用 `<webview>.getWebContents()`,因為它依賴於 remote 模組。 #20726

5.x.y 版本終止支援

根據專案的支援政策,Electron 5.x.y 已達到終止支援。建議開發人員和應用程式升級到較新版本的 Electron。

應用程式回饋計畫

我們繼續使用我們的應用程式回饋計畫進行測試。參與此計畫的專案在其應用程式上測試 Electron beta 版本;作為回報,他們發現的新錯誤將在穩定版本中優先處理。如果您想參與或了解更多資訊,請查看我們關於該計畫的部落格文章

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要組件(包括 Chromium、Node 和 V8)的開發。儘管我們謹慎不對發布日期做出承諾,但我們的計畫是每季發布包含這些組件新版本的 Electron 主要版本。暫定的 9.0.0 時程表 列出了 Electron 9 開發生命週期中的關鍵日期。此外,請參閱我們的版本控制文件,以取得有關 Electron 版本控制的更詳細資訊。

有關即將發布的 Electron 版本中計畫的重大變更的資訊,請參閱我們的計畫中的重大變更文件

`remote` 模組的棄用(從 Electron 9 開始)

由於嚴重的安全性責任,我們開始計畫從 Electron 9 開始棄用 `remote` 模組。您可以閱讀並追蹤 此 issue,其中詳細說明了我們這樣做的原因,並包含建議的棄用時程表。