Electron 9.0.0發佈!帶來三項重大改進,不再支持Electron 6

“真香”定律再度應驗。

美國時間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)。新版本包含衆多升級、修補程序和新功能,本文會介紹這個版本的更新細節。

值得關注的更改

棧更改

重要特性

  • 拼寫檢查器功能新增多項改進。請參閱#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更改:
  • 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

延伸閱讀

https://www.electronjs.org/blog/electron-9-0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章