Electron 4.0 穩定版發佈,集成 Node 10 和 Chromium 69

Electron 4.0 穩定版發佈,集成 Node 10 和 Chromium 69

Electron 團隊宣佈推出 Electron 4.0 穩定版啦!新版本包含了升級、修復和新特性,更多信息請閱讀下文。

你現在可以從 electronjs.org 下載,或者通過 npm install electron@latest 來安裝它了。

新特性

Electron 的很大一部分功能由 Chromium、Node.js 和 V8 提供,它們是構成 Electron 的核心組件。因此,Electron 團隊的一個關鍵目標是儘可能跟上這些項目的變化,讓 Electron 用戶能夠使用新的 Web 和 JavaScript 特性。為此,Electron 4 將每個組件升級到主要版本,Electron 4 對應的組件版本分別是:Chromium 69.0.3497.106、Node 10.11.0 和 V8 6.9.427.24。

此外,Electron 4 還包括對 Electron 特定 API 的變更,下面將列出 Electron 4 中的一些主要變更,完整的變更列表請查看。

禁用 remote 模塊

你現在可以出於安全原因禁用 remote 模塊,可以為 BrowserWindows 和 webview 標記禁用該模塊:

複製代碼

過濾 remote.require()/remote.getGlobal() 請求

如果你不想在渲染器進程或 webview 中完全禁用 remote 模塊,但又希望進一步控制需要哪些模塊(通過 remote.require),那麼這個特性就非常有用。

在渲染器進程中通過 remote.require 加載模塊時,會在 app 模塊上觸發 remote-require 事件。你可以針對事件調用 event.preventDefault() 來阻止加載模塊,其中事件作為第一個參數,WebContents 實例作為第二個參數,模塊的名稱作為第三個參數。WebContents 實例也會觸發相同的事件,但此時的參數是事件和模塊名稱。對於這兩種情況,你都可以通過設置 event.returnValue 來返回自定義值。

複製代碼

同樣,在調用 remote.getGlobal(name) 時會觸發 remote-get-global 事件。這與 remote-require 事件類似:調用 preventDefault() 來防止返回 global,並設置 event.returnValue 來返回自定義值。

複製代碼

通過 JavaScript 訪問"關於"面板

在 macOS 上,現在可以調用 app.showAboutPanel() 來顯示"關於"面板,就像單擊通過{role:'about'}創建的菜單項一樣。

控制 WebContents 的後臺 Throttling

WebContents 實例提供了 setBackgroundThrottling(allowed) 方法,在頁面失去焦點時啟用或禁用定時器和動畫的限制。

重大變更

不再支持 macOS 10.9

Chromium 不再支持 macOS 10.9(OS X Mavericks),因此 Electron 4.0 及更高版本也不支持它。

單實例鎖定

之前,要讓應用程序成為單實例應用(確保任何時候都只有一個應用程序實例在運行),你可以使用 app.makeSingleInstance() 方法。從 Electron 4.0 開始,你必須使用 app.requestSingleInstanceLock()。這個方法的返回值表示應用程序實例是否成功獲得鎖。如果它無法獲得鎖,你可以認為應用程序的另一個實例已經獲得鎖,並在運行當中,所以當前實例會立即退出。

win_delay_load_hook

在為 Windows 構建原生模塊時,binding.gyp 模塊中的 win_delay_load_hook 變量必須為 true(這是默認值)。如果這個 hook 不存在,那麼原生模塊將無法在 Windows 上加載,並顯示錯誤消息,如"Cannot find module"。

被棄用的特性

Electron 5.0 將對以下特性做出重大變更,因此在 Electron 4.0 棄用它們。

對通過 nativeWindowOpen 打開的 Windows 禁用 Node.js 集成

從 Electron 5.0 開始,使用 nativeWindowOpen 選項打開的子窗口將始終禁用 Node.js 集成。

webPreferences 默認值

通過設置 webPreferences 選項創建新 BrowerWindow 時,webPreferences 的一些選項默認值發生變化:

Electron 4.0 穩定版發佈,集成 Node 10 和 Chromium 69

Electron 4.0 仍將使用當前默認值,但如果你沒有顯式為它們提供值,將會看到棄用警告。

webContents.findInPage(text[, options])

medialCapitalAsWordStart 和 wordStart 選項已被棄用,因為它們在上游中已被移除。

App 反饋計劃

我們在 Electron 3.0 開發過程中制定的 App 反饋計劃無疑是成功的,所以我們在 4.0 的開發過程中也繼續這樣做。要了解有關應用反饋計劃的更多信息並參與未來的測試版,請參閱我們的。

後續的計劃

在短期內,我們將繼續專注於跟上主要組件的開發步伐,包括 Chromium、Node 和 V8。我們儘量不對具體發佈日期做出承諾,不過,我們還是會計劃大約每季度發佈一次 Electron 的新主要版本。有關 Electron 版本控制的更多詳細信息,請參閱我們的。

有關即將發佈的 Electron 版本的重大變更,請參閱我們的。

英文原文

https://electronjs.org/blog/electron-4-0


分享到:


相關文章: