“真香”定律再度應驗。
美國時間5月19日,Electron 團隊宣佈 Electron 9.0.0正式發佈。新版包括了Chromium 83、V8 8.3和Node.js 12.14幾個組件的升級。此次更新爲拼寫檢查器功能添加了幾個新的API集成,並新增了PDF查看器,還有很多其他的更新。
開發者可以在npm上使用npm install electro@latest命令安裝,或從 Electron 的發行網站下載(https://electronjs.org/releases/stable)。新版本包含衆多升級、修補程序和新功能,本文會介紹這個版本的更新細節。
值得關注的更改
棧更改
- Chromium 83.0.4103.64
- Node.js 12.14.1
- Node 12.14.1介紹(https://nodejs.org/en/blog/release/v12.14.1/)
- V8 8.3
- V8 8.1介紹(https://v8.dev/blog/v8-release-81)
- V8 8.3介紹(https://v8.dev/blog/v8-release-83)
重要特性
- 拼寫檢查器功能新增多項改進。請參閱#22128和#22368瞭解更多細節。
- Linux上的窗口事件處理程序效率提升。#23260。
- 新增PDF查看器。#22131。
關於新功能和更改的完整列表,請參見9.0.0發行說明(https://github.com/electron/electron/releases/tag/v9.0.0)。
重大改進
- 使用remote模塊時如不帶enableRemoteModle: true,會發出棄用警告。#21546
- 這是我們計劃棄用remote模塊並將其移至用戶區的第一步。可以關注這個issue(https://github.com/electron/electron/issues/21408)瞭解細節,其中詳細說明了此舉的原因,還列出了建議的棄用時間表。
- 默認情況下,將app.enableRendererProcessReuse設置爲true。#22336
- 這是一項持續性工作,針對未來的一個需求,即渲染器進程中加載的原生Node模塊應爲N-API或Context Aware之一。這個issue詳細介紹了完整的信息和建議的時間表(https://github.com/electron/electron/issues/18397)。
- 現在,通過IPC發送非JavaScript對象會拋出異常。#21560
- 此行爲在Electron 8.0中已棄用。在Electron 9.0中,舊的序列化算法已被移除,現在,發送這一類不可序列化的對象將出現“object could not be cloned(無法克隆的對象)”錯誤。
關於這些改進以及未來改進的更多信息,請參閱“計劃的重大改進”頁面(https://github.com/electron/electron/blob/master/docs/breaking-changes.md)。
API更改
- shell API更改:
- shell.openItem API已替換爲異步的shell.openPath API。(https://github.com/electron/governance/blob/master/wg-api/spec-documents/shell-openitem.md)
- session API更改:
- 添加了session.listWordsFromSpellCheckerDictionary API,以列出字典中的自定義單詞。#22128
- 添加了session.removeWordFromSpellCheckerDictionary API,以刪除字典中的自定義單詞。#22368
- 添加了session.serviceWorkerContext API,以訪問基本服務worker信息並接收來自服務worker的控制檯日誌。#22313
- app API更改:
- 在macOS上的app.focus()中添加了一個新的force參數,以允許應用強制聚焦。#23447
- BrowserWindow API更改:
- 添加了對BrowserWindow上某些getter/setter對的屬性訪問的支持。#23208
棄用的API
新版已棄用或移除了以下API:
- shell.openItem API現已棄用,並用異步的shell.openPath API代替。
.getWebContents(在Electron 8.0中已棄用)現已移除。 - webFrame.setLayoutZoomLevelLimits(在Electron 8.0中已棄用)現已移除。
對6.x.y的支持終止
根據項目的支持政策(https://electronjs.org/docs/tutorial/support#supported-versions),Electron 6.x.y已達到支持終止階段。我們鼓勵開發人員和應用程序升級到新版本的Electron。
下一步計劃
在短期內,你可以期望團隊繼續專注於構成Electron的主要組件(包括Chromium、Node和V8)的開發工作。雖然我們不會對未來版本的發佈日期做出明確的保證,但我們的計劃是大約每個季度更新Electron的主版本,同時更新這些組件的版本。暫定的10.0.0時間表中列出了Electron 10.0開發週期中的關鍵時點:
https://electronjs.org/docs/tutorial/electron-timelines
另請參閱我們的版本控制文檔,獲取有關Electron中版本控制的更多細節:
https://electronjs.org/docs/tutorial/electron-versioning
關於未來的Electron版本中計劃的重大更改細節,請參閱我們計劃中的重大更改文檔:
https://github.com/electron/electron/blob/master/docs/breaking-changes.md
將contextIsolation的默認值從false更改爲true(從Electron 10開始)
如果沒有contextIsolation,在渲染器進程中運行的任何代碼都可以很容易地進入Electron內部或應用的預加載腳本中。然後這些代碼就可以執行一些Electron想要限制的特權操作了。
更改這個默認設置可提高Electron應用的默認安全性,新設置下應用需要主動開啓選項才能執行不安全行爲。Electron將在Electron 10.0中棄用contextIsolation當前的默認值,並在Electron 12.0中更改爲新的默認值(true)。
關於contextIsolation的介紹、啓用方法以及安全性細節,請參閱我們專門編寫的Context Isolation文檔:
https://github.com/electron/electron/blob/master/docs/tutorial/context-isolation.md
針對新版的反饋可通過Twitter提交:https://twitter.com/electronjs
需要幫助或提交bug,請聯繫:https://www.electronjs.org/contact