Electron 6.0.0
Electron 團隊很高興宣布 Electron 6.0.0 的發布! 您可以使用 npm 透過 npm install electron@latest
安裝,或從我們的 發行版本網站 下載。 此版本包含許多升級、修復和新功能。 我們迫不及待想看看您使用它們構建什麼! 繼續閱讀以了解有關此版本的詳細資訊,並請分享您有的任何回饋!
新功能
今天標誌著 Electron 專案的一個創舉:這是我們第一次在與對應的 Chrome 穩定版本 同一天 發布穩定的 Electron 版本! 🎉
Electron 的許多功能是由 Chromium、Node.js 和 V8 的核心組件提供的。 Electron 與這些專案保持同步更新,以為我們的使用者提供新的 JavaScript 功能、效能改進和安全性修復。 這些套件中的每一個在 Electron 6 中都有主要版本升級
- Chromium
76.0.3809.88
- Node.js
12.4.0
- V8
7.6.303.22
此版本還包括對 Electron API 的改進。 發行說明 中有更完整的列表,但以下是重點
Promise 化
Electron 6.0 延續了 5.0 中開始的 現代化 Promise 支援的倡議。
這些函式現在返回 Promise,並且仍然支援較舊的基於回呼的調用
contentTracing.getCategories()
#16583contentTracing.getCategories()
#16583contentTracing.getTraceBufferUsage()
#16600contents.executeJavaScript()
#17312cookies.flushStore()
#16464cookies.get()
#16464cookies.remove()
#16464cookies.set()
#16464dialog.showCertificateTrustDialog()
#17181inAppPurchase.getProducts()
#17355inAppPurchase.purchaseProduct()
#17355netLog.stopLogging()
#16862session.clearAuthCache()
#17259session.clearCache()
#17185session.clearHostResolverCache()
#17229session.clearStorageData()
#17249session.getBlobData()
#17303session.getCacheSize()
#17185session.resolveProxy()
#17222session.setProxy()
#17222webContents.hasServiceWorker()
#16535webContents.printToPDF()
#16795webContents.savePage()
#16742webFrame.executeJavaScript()
#17312webFrame.executeJavaScriptInIsolatedWorld()
#17312webviewTag.executeJavaScript()
#17312
這些函式現在有兩種形式,同步和基於 Promise 的非同步
dialog.showMessageBox()
/dialog.showMessageBoxSync()
#17298dialog.showOpenDialog()
/dialog.showOpenDialogSync()
#16973dialog.showSaveDialog()
/dialog.showSaveDialogSync()
#17054
這些函式現在返回 Promise
app.dock.show()
#16904
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 版本中計劃的重大變更的資訊,請參閱我們的計劃重大變更文件。