跳至主要內容

Electron 34.0.0

·3 分鐘閱讀

Electron 34.0.0 已發布!它包含 Chromium 132.0.6834.83、V8 13.2 和 Node 20.18.1 的升級。


Electron 團隊很高興宣布發布 Electron 34.0.0!您可以使用 npm 通過 npm install electron@latest 安裝它,或從我們的發布網站下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何回饋,請在 BlueskyMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器中回報。

重要變更

重點

  • 新增 WebFrameMain.collectJavaScriptCallStack() 以存取沒有回應的渲染器的 JavaScript 呼叫堆疊。#44938
  • 新增 API 以使用 Brotli 或 ZStandard 管理共享字典,以提高壓縮效率。新的 API 為 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950

堆疊變更

Electron 34 將 Chromium 從 130.0.6723.44 升級到 132.0.6834.83,將 Node 從 20.18.0 升級到 20.18.1,並將 V8 從 13.0 升級到 13.2

新功能

  • 新增 API 以使用 Brotli 或 ZStandard 管理共享字典,以提高壓縮效率。新的 API 為 session.getSharedDictionaryUsageInfo()session.getSharedDictionaryInfo(options)session.clearSharedDictionaryCache()session.clearSharedDictionaryCacheForIsolationKey(options)#44950
  • 新增 WebFrameMain.collectJavaScriptCallStack() 以存取沒有回應的渲染器的 JavaScript 呼叫堆疊。#44938
  • 為處於卸載狀態的框架新增 WebFrameMain.detached
    • 新增 WebFrameMain.isDestroyed() 以判斷框架是否已銷毀。
    • 修復當框架正在卸載時,webFrameMain.fromId(processId, frameId) 返回的 WebFrameMain 實例與給定參數不符的問題。#43473
  • 在公用程式程序中新增錯誤事件,以支援 V8 嚴重錯誤的診斷報告。#43774
  • 功能:GPU 加速的共享紋理離螢幕渲染。#42953

重大變更

行為變更:在 Windows 上全螢幕時,功能表列將會隱藏

這使得行為與 Linux 相同。先前行為:在 Windows 上全螢幕時,功能表列仍然可見。新行為:在 Windows 上全螢幕時,功能表列會隱藏。

更正:這之前在 Electron 33 中被列為重大變更,但實際上是首先在 Electron 34 中發布的。

停止支援 31.x.y

根據專案的支援政策,Electron 31.x.y 已終止支援。建議開發人員和應用程式升級到較新版本的 Electron。

E34 (2025 年 1 月)E35 (2025 年 4 月)E36 (2025 年 6 月)
34.x.y35.x.y36.x.y
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。

將我們的生態系統遷移至 Node 22

·2 分鐘閱讀

在 2025 年初,Electron 的 npm 生態系統儲存庫(在 @electron/@electron-forge/ 名稱空間下)將會把 Node.js 22 作為最低支援版本。


這代表什麼?

過去,Electron npm 生態系統中的套件(Forge、Packager 等)會盡可能地支援 Node 版本,即使某個版本已經達到其生命週期結束 (EOL) 日期。這樣做是為了確保我們不會讓生態系統分散—我們理解許多專案依賴於舊版本的 Node,並且我們不想冒著讓這些專案被淘汰的風險,除非有迫切的理由需要升級。

隨著時間的推移,使用 Node.js 14 作為最低版本變得越來越困難,原因如下:

  • 缺乏官方的 Node.js 14 macOS ARM64 建置版本,需要我們維護 CI 基礎設施的變通方法,以提供完整的測試覆蓋率。
  • 上游套件依賴項的 engines 要求已經向前推進,使得越來越難以透過依賴項升級來解決供應鏈安全問題。

此外,較新版本的 Node.js 包含許多我們想要利用的改進,例如執行階段原生的通用工具(例如 fs.globutil.parseArgs)和全新的內建模組(例如 node:testnode:sqlite)。

為什麼現在升級?

在 2024 年 7 月,Electron 的生態系統工作小組決定將所有套件升級到最早支援同步 ESM 圖形 require() 的 Node 版本(請參閱 nodejs/node#51977nodejs/node#53500),在該版本達到其 LTS 日期後的未來某個時間點。

我們已決定將更新時間設定在 2025 年 1 月/2 月。在此升級發生後,Node 22 將會是現有生態系統套件中支援的最低版本。

我需要採取什麼行動?

我們將盡可能保持相容性。但是,為了確保最佳支援,我們鼓勵您將您的應用程式升級到 Node 22 或更高版本。

請注意,您專案中執行的 Node 版本與嵌入到目前 Electron 版本中的 Node 版本無關。

下一步是什麼?

如果您有任何問題或疑慮,請隨時寫信給我們:info@electronjs.org。您也可以在我們的官方 Electron Discord 中找到社群支援。

十二月靜默期 (2024 年 12 月)

·一分鐘閱讀

Electron 專案將在 2024 年 12 月暫停,然後在 2025 年 1 月恢復全速運作。

透過 GIPHY


12 月會保持不變的部分

  1. 零日漏洞和其他主要安全相關的版本將會根據需要發布。安全事件應透過 SECURITY.md 回報。
  2. 行為準則報告和審核將會繼續進行。

12 月會有所不同的部分

  1. 2024 年最後的穩定分支版本,包括 Electron 31、32 和 33,將在 12 月 1 日那一週發布。12 月不會有其他計畫發布的版本。
  2. 12 月的最後兩週將不會有 Nightly 和 Alpha 版本。
  3. 除了少數例外,將不會有提取請求審查或合併。
  4. 任何儲存庫都不會更新問題追蹤器。
  5. 維護人員不會在 Discord 上提供除錯協助。
  6. 不會更新社群媒體內容。

2025 年再見!

從 BrowserView 遷移到 WebContentsView

·3 分鐘閱讀

BrowserViewElectron 30 以來已遭棄用,並由 WebContentView 取代。幸運的是,遷移相當輕鬆。


Electron 正在從 BrowserView 轉移到 WebContentsView,以與 Chromium 的 UI 框架 Views API 對齊。WebContentsView 提供一個可重複使用的視圖,直接綁定到 Chromium 的渲染管道,簡化了未來的升級,並為開發人員打開了將非網頁 UI 元素整合到其 Electron 應用程式的可能性。透過採用 WebContentsView,應用程式不僅為即將到來的更新做好了準備,而且還受益於降低的程式碼複雜性和更少的潛在錯誤。

熟悉 BrowserWindows 和 BrowserViews 的開發人員應注意,BrowserWindowWebContentsView 分別是繼承自 BaseWindowView 基底類別的子類別。若要充分了解可用的實例變數和方法,請務必查閱這些基底類別的文件。

遷移步驟

1. 將 Electron 升級到 30.0.0 或更高版本

警告

Electron 版本可能包含會影響您應用程式的重大變更。在繼續此遷移的其餘部分之前,最好先在您的應用程式上測試並執行 Electron 升級。每個 Electron 主要版本的重大變更清單可以在 這裡 以及 Electron 部落格上每個主要版本的發行說明中找到。

2. 熟悉您的應用程式使用 BrowserViews 的位置

執行此操作的一種方法是搜尋您的程式碼庫中的 new BrowserView(。這應該讓您了解您的應用程式如何使用 BrowserViews 以及有多少呼叫點需要遷移。

提示

在大多數情況下,您的應用程式實例化新 BrowserViews 的每個實例都可以與其他實例隔離遷移。

3. 遷移 BrowserView 的每個用法

  1. 遷移實例化。這應該相當簡單,因為 WebContentsViewBrowserView 的建構函式具有基本相同的形狀。兩者都透過 webPreferences 參數接受 WebPreferences

    - this.tabBar = new BrowserView({
    + this.tabBar = new WebContentsView({
    資訊

    預設情況下,WebContentsView 會實例化為白色背景,而 BrowserView 會實例化為透明背景。若要在 WebContentsView 中取得透明背景,請將其背景顏色設定為 RGBA 十六進位值,並將 alpha(不透明度)通道設定為 00

    + this.webContentsView.setBackgroundColor("#00000000");
  2. 遷移將 BrowserView 新增到其父視窗的位置。

    - this.browserWindow.addBrowserView(this.tabBar)
    + this.browserWindow.contentView.addChildView(this.tabBar);
  3. 遷移父視窗上的 BrowserView 實例方法呼叫。

    舊方法新方法注意事項
    win.setBrowserViewwin.contentView.removeChildView + win.contentView.addChildView
    win.getBrowserViewwin.contentView.children
    win.removeBrowserViewwin.contentView.removeChildView
    win.setTopBrowserViewwin.contentView.addChildView在現有視圖上呼叫 addChildView 會將其重新排序到頂部。
    win.getBrowserViewswin.contentView.children
  4. setAutoResize 實例方法遷移到調整大小偵聽器。

    - this.browserView.setAutoResize({
    - vertical: true,
    - })

    + this.browserWindow.on('resize', () => {
    + if (!this.browserWindow || !this.webContentsView) {
    + return;
    + }
    + const bounds = this.browserWindow.getBounds();
    + this.webContentsView.setBounds({
    + x: 0,
    + y: 0,
    + width: bounds.width,
    + height: bounds.height,
    + });
    + });
    提示

    所有現有的 browserView.webContents 用法和實例方法 browserView.setBoundsbrowserView.getBoundsbrowserView.setBackgroundColor 都無需遷移,並且應該可以與 WebContentsView 實例直接使用!

4. 測試並提交您的變更

遇到問題?請查看 Electron 問題追蹤器上的 WebContentsView 標籤,看看您遇到的問題是否已回報。如果您沒有在那裡看到您的問題,請隨時新增一份新的錯誤回報。包含測試案例 Gist 將有助於我們更好地分類您的問題!

恭喜,您已遷移到 WebContentsViews!🎉

Electron 33.0.0

·4 分鐘閱讀

Electron 33.0.0 已發布!它包括升級到 Chromium 130.0.6723.44、V8 13.0 和 Node 20.18.0。


Electron 團隊很高興宣布發布 Electron 33.0.0!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的 發行網站 下載它。繼續閱讀以了解有關此版本的詳細資訊。

如果您有任何意見反應,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器 中回報。

重要變更

重點

  • 新增了一個處理常式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 碼時解鎖加密裝置。#41205
  • 擴展 navigationHistory API,新增 2 個函式以改善歷史紀錄管理。#42014
  • 改進了原生主題透明度的檢查。#42862

堆疊變更

Electron 33 將 Chromium 從 128.0.6613.36 升級到 130.0.6723.44,Node 從 20.16.0 升級到 20.18.0,以及 V8 從 12.8 升級到 13.0

新功能

  • 新增了一個處理常式 app.setClientCertRequestPasswordHandler(handler),以協助在需要 PIN 碼時解鎖加密裝置。#41205
  • 在 utility process 中新增錯誤事件,以支援 V8 嚴重錯誤的診斷報告。#43997
  • 新增 View.setBorderRadius(radius) 以自訂視圖的邊框圓角,並與 WebContentsView 相容。#42320
  • 擴展 navigationHistory API,新增 2 個函式以改善歷史紀錄管理。#42014

重大變更

已移除:macOS 10.15 支援

macOS 10.15 (Catalina) 已不再受 Chromium 支援。

較舊版本的 Electron 將繼續在 Catalina 上執行,但執行 Electron v33.0.0 及更高版本將需要 macOS 11 (Big Sur) 或更新版本。

行為變更:原生模組現在需要 C++20

由於上游的變更,V8Node.js 現在都要求最低版本為 C++20。使用原生 Node 模組的開發人員應該使用 --std=c++20 而不是 --std=c++17 來建置他們的模組。使用 gcc9 或更低版本的映像檔可能需要更新到 gcc10 才能編譯。請參閱 #43555 以瞭解更多詳細資訊。

行為變更:Windows 上的自訂協定 URL 處理

由於 Chromium 中為支援 Non-Special Scheme URLs 所做的變更,使用 Windows 檔案路徑的自訂協定 URL 將不再能正確地與已棄用的 protocol.registerFileProtocol 以及 BrowserWindow.loadURLWebContents.loadURL<webview>.loadURL 上的 baseURLForDataURL 屬性搭配使用。protocol.handle 也無法與這些類型的 URL 搭配使用,但這不是一個變更,因為它一直都是這樣運作的。

// No longer works
protocol.registerFileProtocol('other', () => {
callback({ filePath: '/path/to/my/file' });
});

const mainWindow = new BrowserWindow();
mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://C:\\myapp' },
);
mainWindow.loadURL('other://C:\\myapp\\index.html');

// Replace with
const path = require('node:path');
const nodeUrl = require('node:url');
protocol.handle(other, (req) => {
const srcPath = 'C:\\myapp\\';
const reqURL = new URL(req.url);
return net.fetch(
nodeUrl.pathToFileURL(path.join(srcPath, reqURL.pathname)).toString(),
);
});

mainWindow.loadURL(
'data:text/html,<script src="loaded-from-dataurl.js"></script>',
{ baseURLForDataURL: 'other://' },
);
mainWindow.loadURL('other://index.html');

行為變更:apploginwebContents 屬性

當從使用 respondToAuthRequestsFromMainProcess 選項建立的 utility process 發出的請求觸發時,applogin 事件中的 webContents 屬性將為 null

已棄用:BrowserWindowConstructorOption.type 中的 textured 選項

BrowserWindowConstructorOptionstypetextured 選項已棄用,沒有替代方案。此選項依賴於 macOS 上的 NSWindowStyleMaskTexturedBackground 樣式遮罩,該遮罩已棄用且沒有替代方案。

已棄用:systemPreferences.accessibilityDisplayShouldReduceTransparency

systemPreferences.accessibilityDisplayShouldReduceTransparency 屬性現在已棄用,而改用新的 nativeTheme.prefersReducedTransparency,它提供相同的資訊,並且跨平台運作。

// Deprecated
const shouldReduceTransparency =
systemPreferences.accessibilityDisplayShouldReduceTransparency;

// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency;

30.x.y 版本終止支援

根據專案的支援政策,Electron 30.x.y 已達到終止支援的階段。建議開發人員和應用程式升級到較新版本的 Electron。

E33 (2024 年 10 月)E34 (2025 年 1 月)E35 (2025 年 4 月)
33.x.y34.x.y35.x.y
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。

介紹 API 歷史 (GSoC 2024)

·閱讀時間 7 分鐘

現在會在文件中詳細說明 Electron API 的歷史變更。


嗨 👋,我是 Peter,Electron 2024 年 Google Summer of Code (GSoC) 的貢獻者。

在 GSoC 計劃期間,我為 Electron 文件及其函式、類別等實作了 API 歷史功能,其方式與 Node.js 文件類似:允許在 API 文件 Markdown 檔案中使用簡單但功能強大的 YAML 結構描述,並在 Electron 文件網站上精美地顯示出來。

Electron 32.0.0

·4 分鐘閱讀

Electron 32.0.0 已發布!其中包括升級到 Chromium 128.0.6613.36、V8 12.8 和 Node 20.16.0


Electron 團隊很高興宣布發布 Electron 32.0.0!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的發布網站下載它。繼續閱讀以瞭解有關此版本的詳細資訊。

如果您有任何意見反應,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器 中回報。

重要變更

重點

  • 在我們的文件中新增了新的 API 版本歷史記錄,此功能由 @piotrpdev 作為 Google Summer of Code 的一部分建立。您可以在此部落格文章中瞭解更多資訊。#42982
  • 從 Web File API 中移除了非標準的 File.path 擴充功能。#42053
  • 當嘗試在封鎖的路徑中開啟檔案或目錄時,使 Web File System API 中的失敗路徑與上游對齊。#42993
  • 將以下現有的導航相關 API 新增至 webcontents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear。先前的導航 API 現在已棄用。#41752

堆疊變更

Electron 32 將 Chromium 從 126.0.6478.36 升級到 128.0.6613.36,Node 從 20.14.0 升級到 20.16.0,以及 V8 從 12.6 升級到 12.8

新功能

  • 新增對透過 app 模組的 'login' 事件回應從 utility process 啟動的驗證請求的支援。#43317
  • cumulativeCPUUsage 屬性新增至 CPUUsage 結構,該屬性會傳回自程序啟動以來使用的 CPU 時間總秒數。#41819
  • 將以下現有的導航相關 API 新增至 webContents.navigationHistorycanGoBackgoBackcanGoForwardgoForwardcanGoToOffsetgoToOffsetclear#41752
  • 擴展 WebContentsView 以接受預先存在的 webContents 物件。#42086
  • nativeTheme 中新增了一個新屬性 prefersReducedTransparency,它指示使用者是否已選擇透過系統協助工具設定來減少作業系統層級的透明度。#43137
  • 當嘗試在封鎖的路徑中開啟檔案或目錄時,使 File System Access API 中的失敗路徑與上游對齊。#42993
  • 在 Linux 上啟用 Windows 控制項覆蓋 API。#42681
  • 在網路請求中啟用 zstd 壓縮。#43300

重大變更

已移除:File.path

Web File 物件的非標準 path 屬性是在早期版本的 Electron 中新增的,作為在渲染器中執行所有操作時處理原生檔案的便利方法。但是,它代表偏離標準,並且也構成輕微的安全風險,因此從 Electron 32.0 開始,它已被移除,而改用 webUtils.getPathForFile 方法。

// Before (renderer)
const file = document.querySelector('input[type=file]');
alert(`Uploaded file path was: ${file.path}`);
// After (renderer)
const file = document.querySelector('input[type=file]');
electron.showFilePath(file);

// After (preload)
const { contextBridge, webUtils } = require('electron');

contextBridge.exposeInMainWorld('electron', {
showFilePath(file) {
// It's best not to expose the full file path to the web content if
// possible.
const path = webUtils.getPathForFile(file);
alert(`Uploaded file path was: ${path}`);
},
});

已棄用:WebContents 上的 clearHistorycanGoBackgoBackcanGoForwardgoForwardgoToIndexcanGoToOffsetgoToOffset

WebContents 執行個體上的導航相關 API 現在已棄用。這些 API 已移至 WebContentsnavigationHistory 屬性,以便為管理導航歷史記錄提供更結構化且直觀的介面。

// Deprecated
win.webContents.clearHistory();
win.webContents.canGoBack();
win.webContents.goBack();
win.webContents.canGoForward();
win.webContents.goForward();
win.webContents.goToIndex(index);
win.webContents.canGoToOffset();
win.webContents.goToOffset(index);

// Replace with
win.webContents.navigationHistory.clear();
win.webContents.navigationHistory.canGoBack();
win.webContents.navigationHistory.goBack();
win.webContents.navigationHistory.canGoForward();
win.webContents.navigationHistory.goForward();
win.webContents.navigationHistory.canGoToOffset();
win.webContents.navigationHistory.goToOffset(index);

29.x.y 版本終止支援

根據專案的支援政策,Electron 29.x.y 已達到終止支援的階段。建議開發人員和應用程式升級到較新版本的 Electron。

E32 (2024 年 8 月)E33 (2024 年 10 月)E34 (2025 年 1 月)
32.x.y33.x.y34.x.y
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。

Electron 31.0.0

·3 分鐘閱讀

Electron 31.0.0 已發布!其中包括升級到 Chromium 126.0.6478.36、V8 12.6 和 Node 20.14.0


Electron 團隊很高興宣布發布 Electron 31.0.0!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的發布網站下載它。繼續閱讀以瞭解有關此版本的詳細資訊。

如果您有任何意見反應,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器 中回報。

重要變更

重點

  • 擴展 WebContentsView 以接受預先存在的 webContents 物件。#42319
  • 新增對 NODE_EXTRA_CA_CERTS 的支援。#41689
  • 將 window.flashFrame(bool) 更新為在 macOS 上持續閃爍。#41391
  • 移除了 WebSQL 支援#41868
  • nativeImage.toDataURL 將保留 PNG 色彩空間#41610
  • 擴展 webContents.setWindowOpenHandler 以支援手動建立 BrowserWindow。#41432

堆疊變更

Electron 31 將 Chromium 從 124.0.6367.49 升級到 126.0.6478.36,Node 從 20.11.1 升級到 20.14.0,以及 V8 從 12.4 升級到 12.6

新功能

  • 新增了 clearData 方法到 Session#40983
    • 新增了選項參數到 Session.clearData API。 #41355
  • navigator.serial 中新增了透過服務類別 ID 請求藍牙連接埠的支援。 #41638
  • 新增了對 Node 的 NODE_EXTRA_CA_CERTS 環境變數的支援。 #41689
  • 擴展 webContents.setWindowOpenHandler 以支援手動建立 BrowserWindow。#41432
  • 實作了對網頁標準 File System API 的支援。 #41419
  • 擴展了 WebContentsView 以接受預先存在的 WebContents 實例。 #42319
  • 在 webContents API 上新增了一個新的實例屬性 navigationHistory,其中包含 navigationHistory.getEntryAtIndex 方法,使應用程式能夠檢索瀏覽歷史記錄中任何導航條目的 URL 和標題。 #41577 (也在 29, 30 中)

重大變更

已移除:WebSQL 支援

Chromium 已移除對 WebSQL 的上游支援,將其轉移到僅限 Android。請參閱 Chromium 的移除意向討論以了解更多資訊。

行為變更:nativeImage.toDataURL 將保留 PNG 色彩空間

PNG 解碼器實作已變更為保留色彩空間資料。從此函數傳回的編碼資料現在與其匹配。

有關更多資訊,請參閱 crbug.com/332584706

行為變更:win.flashFrame(bool) 在 macOS 上將持續閃爍 Dock 圖示

這使得行為與 Windows 和 Linux 一致。先前的行為:第一次 flashFrame(true) 只會彈跳 Dock 圖示一次(使用 NSInformationalRequest 層級),而 flashFrame(false) 則沒有任何作用。新的行為:持續閃爍直到呼叫 flashFrame(false)。這改為使用 NSCriticalRequest 層級。要明確使用 NSInformationalRequest 以造成單次 Dock 圖示彈跳,仍然可以使用 dock.bounce('informational')

結束對 28.x.y 的支援

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

E31 (2024 年 6 月)E32 (2024 年 8 月)E33 (2024 年 10 月)
31.x.y32.x.y33.x.y
30.x.y31.x.y32.x.y
28.x.y29.x.y31.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。

Electron 30.0.0

·4 分鐘閱讀

Electron 30.0.0 已發布!它包含對 Chromium 124.0.6367.49、V8 12.4 和 Node.js 20.11.1 的升級。


Electron 團隊很高興宣布發布 Electron 30.0.0!您可以使用 npm 透過 npm install electron@latest 安裝它,或從我們的 發布網站下載它。請繼續閱讀有關此版本詳細資訊。

如果您有任何意見反應,請在 TwitterMastodon 上與我們分享,或加入我們的社群 Discord!錯誤和功能請求可以在 Electron 的 問題追蹤器 中回報。

重要變更

重點

  • 現在 Windows 上支援 ASAR 完整性熔斷器 (#40504)
    • 如果未正確配置,已啟用 ASAR 完整性的現有應用程式可能無法在 Windows 上運作。使用 Electron 打包工具的應用程式應升級到 @electron/packager@18.3.1@electron/forge@7.4.0
    • 請查看我們的 ASAR 完整性教學以了解更多資訊。
  • 新增 WebContentsViewBaseWindow 主進程模組,已棄用並取代 BrowserView (#35658)。在 此部落格文章中了解更多關於如何從 BrowserView 遷移到 WebContentsView 的資訊。
    • BrowserView 現在是 WebContentsView 的 shim,並且舊的實作已移除。
    • 請參閱 我們的網頁嵌入文件以比較新的 WebContentsView API 與其他類似 API。
  • 實作了對 File System API 的支援 (#41827)

堆疊變更

Electron 30 將 Chromium 從 122.0.6261.39 升級到 124.0.6367.49,Node 從 20.9.0 升級到 20.11.1,以及 V8 從 12.2 升級到 12.4

新功能

  • 在 webviews 中新增了一個 transparent webpreference。 (#40301)
  • 在 webContents API 上新增了一個新的實例屬性 navigationHistory,其中包含 navigationHistory.getEntryAtIndex 方法,使應用程式能夠檢索瀏覽歷史記錄中任何導航條目的 URL 和標題。 (#41662)
  • 新增了新的 BrowserWindow.isOccluded() 方法,允許應用程式檢查遮蔽狀態。 (#38982)
  • 為從公用程式進程發出的 net 模組請求新增了代理設定支援。 (#41417)
  • navigator.serial 中新增了透過服務類別 ID 請求藍牙連接埠的支援。 (#41734)
  • 新增了對 Node.js NODE_EXTRA_CA_CERTS CLI 旗標的支援。 (#41822)

重大變更

行為變更:跨來源 iframes 現在使用權限策略來存取功能

跨來源 iframes 現在必須透過 allow 屬性指定特定 iframe 可用的功能,才能存取它們。

有關更多資訊,請參閱 文件

已移除:--disable-color-correct-rendering 命令列切換器

此切換器從未正式記錄,但無論如何在此處記錄其移除。Chromium 本身現在對色彩空間有更好的支援,因此不需要此旗標。

行為變更:macOS 上的 BrowserView.setAutoResize 行為

在 Electron 30 中,BrowserView 現在是新的 WebContentsView API 的包裝器。

先前,BrowserView API 的 setAutoResize 函數由 macOS 上的 自動調整大小以及 Windows 和 Linux 上的自訂演算法支援。對於簡單的使用案例(例如使 BrowserView 填滿整個視窗),這兩種方法的行為是相同的。但是,在更進階的案例中,macOS 上的 BrowserView 會以不同於其他平台的方式自動調整大小,因為 Windows 和 Linux 的自訂調整大小演算法與 macOS 的自動調整大小 API 的行為並不完全匹配。現在,自動調整大小的行為在所有平台上都是標準化的。

如果您的應用程式使用 BrowserView.setAutoResize 來執行比讓 BrowserView 填滿整個視窗更複雜的操作,則您可能已經有自訂邏輯來處理 macOS 上此行為的差異。如果是這樣,由於自動調整大小行為是一致的,因此在 Electron 30 中將不再需要該邏輯。

已移除:WebContentscontext-menuparams.inputFormType 屬性

已移除來自 WebContentscontext-menu 事件中 params 物件的 inputFormType 屬性。改用新的 formControlType 屬性。

已移除:process.getIOCounters()

Chromium 已移除對此資訊的存取權。

27.x.y 版本終止支援

根據專案的支援政策,Electron 27.x.y 版本已終止支援。我們鼓勵開發者和應用程式升級至較新的 Electron 版本。

E30 (2024 年 4 月)E31 (2024 年 6 月)E32 (2024 年 8 月)
30.x.y31.x.y32.x.y
29.x.y30.x.y31.x.y
28.x.y29.x.y30.x.y

下一步

在短期內,您可以預期團隊將繼續專注於跟上構成 Electron 的主要元件(包括 Chromium、Node 和 V8)的開發。

您可以在這裡找到Electron 的公開時間表

有關未來變更的更多資訊,請參閱計畫中的重大變更頁面。

Google Summer of Code 2024

·4 分鐘閱讀

我們很高興宣布 Electron 已被接受為 2024 年 Google Summer of Code (GSoC) 第二十屆的指導組織!Google Summer of Code 是一項全球計畫,旨在將新的貢獻者帶入開源軟體開發領域。

如需更多計畫詳細資訊,請查看 Google 的 Summer of Code 首頁

關於我們

Electron 是一個 JavaScript 框架,用於使用網頁技術建構跨平台的桌面應用程式。核心 Electron 框架是一個使用 ChromiumNode.js 編譯而成的二進制可執行檔,主要以 C++ 編寫。

除了 Electron 核心之外,我們還致力於多個專案,以協助維持 Electron 組織的運作,例如:

作為 Summer of Code 的貢獻者,您將與 Electron 的一些核心貢獻者合作,參與 github.com/electron 傘下的眾多專案之一。

申請前須知

如果您對 Electron 不太熟悉,我們建議您從閱讀文件並嘗試 Electron Fiddle 中的範例開始。

若要深入了解 Electron 應用程式發布,您也可以建立一個範例應用程式,試用 Electron Forge

npm init electron-app@latest my-app

在稍微熟悉程式碼後,請加入 Electron Discord 伺服器參與討論。

資訊

如果這是您第一次參與 Google Summer of Code,或您是開源領域的新手,我們建議您在與社群互動之前,先閱讀 Google 的貢獻者指南

撰寫提案

有興趣與 Electron 合作嗎?首先,請查看我們準備的七個專案構想草案。所有列出的構想目前都開放接受提案。

您有不同的構想希望我們考慮嗎?我們也樂於接受不在建議專案清單上的新構想,但請確保您的方法已充分概述和詳細說明。若有疑問,我們建議您堅持使用我們列出的構想。

您的申請應包含:

  • 您的提案:一份書面文件,詳細描述您計畫在夏季期間完成的目標。
  • 您作為開發人員的背景。如果您有履歷表,請附上一份副本。否則,請告訴我們您過去的技術經驗。
    • 在某些領域缺乏經驗不會讓您失去資格,但這將有助於我們的導師制定計畫,以便為您提供最佳支援,並確保您的暑期專案成功。

此處提供一份詳細指南,說明您應提交哪些內容作為 Electron 申請的一部分。請直接將提案提交至 Google Summer of Code 入口網站。請注意,以電子郵件方式發送給 Electron 團隊的提案,而非透過申請入口網站提交的提案,將不被視為最終提交。

如果您希望在提案方面獲得更多指導,或不確定要包含哪些內容,我們也建議您遵循此處官方 Google Summer of Code 的提案撰寫建議

申請於 2024 年 3 月 18 日 開放,並於 2024 年 4 月 2 日 截止。

資訊

我們 2022 年的 Google Summer of Code 實習生 @aryanshridhar 做得非常出色!如果您想了解 Aryan 在 Electron 的夏季期間從事哪些工作,您可以在 2022 年 GSoC 計畫檔案中閱讀他的報告。

有問題嗎?

如果您有我們在部落格文章中未提及的問題,或對您的提案草案有疑問,請發送電子郵件至 summer-of-code@electronjs.org,或查看 GSoC 常見問題

資源