跳至主要內容

Electron 3.0.0

·4 分鐘閱讀

Electron 團隊很高興宣布,第一個穩定的 Electron 3 版本現在可從 electronjs.org 和透過 npm install electron@latest 取得!它充滿了升級、修復和新功能,我們迫不及待想看看您使用它們建構什麼。以下是關於此版本的詳細資訊,我們歡迎您在探索時提供意見反應。


發布流程

在我們進行 v3.0.0 的開發時,我們試圖透過正式化漸進式 beta 版本的意見反應進度,更實證地定義穩定版本的標準。如果沒有我們 應用程式回饋計畫合作夥伴,他們在 beta 週期中提供了早期測試和意見反應,v3.0.0 將不可能實現。感謝 Atlassian、Atom、Microsoft Teams、Oculus、OpenFin、Slack、Symphony、VS Code 和其他計畫成員的努力。如果您想參加未來的 beta 版本,請寄信至 info@electronjs.org 給我們。

變更/新功能

對 Electron 工具鏈的幾個重要部分進行了重大更新,包括 Chrome v66.0.3359.181、Node v10.2.0 和 V8 v6.6.346.23

  • [#12656] feat: app.isPackaged
  • [#12652] feat: app.whenReady()
  • [#13183] feat: process.getHeapStatistics()
  • [#12485] feat: win.moveTop() 將視窗 z 順序移至頂層
  • [#13110] feat: TextField 和 Button API
  • [#13068] feat: 用於動態記錄控制的 netLog API
  • [#13539] feat: 在沙箱渲染器中啟用 webview
  • [#14118] feat: fs.readSync 現在適用於大型檔案
  • [#14031] feat: node fs 包裝函式,使 fs.realpathSync.nativefs.realpath.native 可用

重大 API 變更

  • [#12362] feat: 更新選單項目順序控制
  • [#13050] refactor: 移除已記錄的棄用 API
    • 有關詳細資訊,請參閱文件
  • [#12477] refactor: 移除 did-get-response-detailsdid-get-redirect-request 事件
  • [#12655] feat: 預設為停用在拖放時瀏覽
  • [#12993] feat: 需要 Node v4.x 或更高版本才能使用 electron npm 模組
  • [#12008 #12140 #12503 #12514 #12584 #12596 #12637 #12660 #12696 #12716 #12750 #12787 #12858] refactor: NativeWindow
  • [#11968] refactor: menu.popup()
  • [#8953] feat: 不再使用 JSON 發送 ipcRenderer.sendSync 的結果
  • [#13039] feat: 預設為忽略 URL 後的命令列引數
  • [#12004] refactor: 將 api::Window 重新命名為 api::BrowserWindow
  • [#12679] feat: 預設為關閉視覺縮放
  • [#12408] refactor: 將應用程式命令 media-play_pause 重新命名為 media-play-pause

macOS

  • [#12093] feat: 工作區通知支援
  • [#12496] feat: tray.setIgnoreDoubleClickEvents(ignore) 以忽略系統匣雙擊事件。
  • [#12281] feat: macOS 上的滑鼠前進功能
  • [#12714] feat: 螢幕鎖定/解除鎖定事件

Windows

  • [#12879] 新增功能:加入 DIP 與螢幕座標轉換功能

注意: 在執行此版本後切換回舊版 Electron,您需要清除您的使用者資料目錄,以避免舊版本當機。您可以使用 console.log(app.getPath("userData")) 取得使用者資料目錄,或參閱 文件 以了解更多詳細資訊。

錯誤修正

  • [#13397] 修正:fs.statSyncNoException 擲出例外狀況的問題
  • [#13476, #13452] 修正:載入包含 jquery 的網站時當機的問題
  • [#14092] 修正:net::ClientSocketHandle 解構函式中的當機問題
  • [#14453] 修正:立即通知焦點變更,而不是在下一個 tick 通知

MacOS

  • [#13220] 修正:允許在 <input file="type"> 開啟檔案對話框中選取套件的問題
  • [#12404] 修正:使用非同步對話框時阻擋主程序的問題
  • [#12043] 修正:關聯選單點擊回呼
  • [#12527] 修正:重複使用觸控列項目時的事件洩漏
  • [#12352] 修正:系統匣標題當機
  • [#12327] 修正:不可拖曳的區域
  • [#12809] 修正:防止選單開啟時更新
  • [#13162] 修正:系統匣圖示邊界不允許負值
  • [#13085] 修正:醒目提示時系統匣標題未反轉
  • [#12196] 修正:當 enable_run_as_node==false 時的 Mac 建置問題
  • [#12157] 修正:具有活力的無邊框視窗的其他問題
  • [#13326] 修正:在呼叫 app.removeAsDefaultProtocolClient 後將 mac 通訊協定設定為 none
  • [#13530] 修正:MAS 建置中不正確地使用私有 API
  • [#13517] 修正:tray.setContextMenu 當機
  • [#14205] 修正:即使設定了 defaultId,在對話框上按下 Esc 鍵現在也會關閉對話框

Linux

  • [#12507] 修正:用於螢幕外視窗的 BrowserWindow.focus()

其他注意事項

  • PDF 檢視器目前無法運作,但正在處理中,很快就會再次恢復功能
  • TextFieldButton API 是實驗性的,因此預設關閉
    • 可以使用 enable_view_api 建置標誌啟用它們

接下來的目標

Electron 團隊會持續致力於定義我們的流程,以便更快速、更順利地升級,同時尋求最終與 Chromium、Node 和 V8 的開發節奏保持一致。