跳到主要內容

Electron 6.0.0

·4 min read

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


新功能

今天標誌著 Electron 專案的一個創舉:這是我們第一次在與對應的 Chrome 穩定版本 同一天 發布穩定的 Electron 版本! 🎉

Electron 的許多功能是由 Chromium、Node.js 和 V8 的核心組件提供的。 Electron 與這些專案保持同步更新,以為我們的使用者提供新的 JavaScript 功能、效能改進和安全性修復。 這些套件中的每一個在 Electron 6 中都有主要版本升級

此版本還包括對 Electron API 的改進。 發行說明 中有更完整的列表,但以下是重點

Promise 化

Electron 6.0 延續了 5.0 中開始的 現代化 Promise 支援的倡議。

這些函式現在返回 Promise,並且仍然支援較舊的基於回呼的調用

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

這些函式現在有兩種形式,同步和基於 Promise 的非同步

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

這些函式現在返回 Promise

Electron Helper (Renderer).app、Electron Helper (GPU).app 和 Electron Helper (Plugin).app

為了啟用 硬化執行階段,它限制了諸如可寫入可執行記憶體和載入由不同團隊 ID 簽署的程式碼之類的事情,因此需要向 Helper 授予特殊的程式碼簽署權利。

為了使這些權利僅限於需要它們的進程類型,Chromium 添加了 Helper 應用程式的三個新變體:一個用於渲染器 (Electron Helper (Renderer).app)、一個用於 GPU 進程 (Electron Helper (GPU).app) 和一個用於外掛程式 (Electron Helper (Plugin).app)。

使用 electron-osx-sign 對其 Electron 應用程式進行程式碼簽署的人員不應對其建置邏輯進行任何變更。 如果您使用自訂腳本對應用程式進行程式碼簽署,則應確保正確地對三個新的 Helper 應用程式進行程式碼簽署。

為了使用這些新的 helper 正確封裝您的應用程式,您需要使用 electron-packager@14.0.4 或更高版本。 如果您正在使用 electron-builder,則應遵循 此問題 以追蹤對這些新 helper 的支援。

重大變更

  • 此版本開始為未來的一項要求奠定基礎,即在渲染器進程中載入的原生 Node 模組必須是 N-API 或 Context Aware。 此變更的原因是更快的效能、更強的安全性以及減少維護工作量。 在 此問題 中閱讀完整詳細資訊,包括建議的時間表。 預計此變更將在 Electron v11 中完成。

  • net.IncomingMessage 標頭已 略有變更,以更緊密地符合 Node.js 行為,特別是關於 set-cookie 的值以及如何處理重複標頭。 #17517

  • shell.showItemInFolder() 現在返回 void 並且是一個非同步調用。 #17121

  • 應用程式現在必須在使用 app.getPath('log') 之前,透過調用新函式 app.setAppLogPath() 來顯式設定日誌路徑。 #17841

終止對 3.x.y 的支援

根據我們的 支援政策,3.x.y 已達到生命週期終止。 鼓勵開發人員和應用程式升級到較新版本的 Electron。

應用程式回饋計畫

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

下一步

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

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