
Electron 接 Windows 原生 API 少寫一層橋,微軟新工具慳到咩功夫?
WinRT projection 減輕橋接維護,但仍有限制同 Windows 專用設定
微軟幫 Node.js 同 Windows Runtime 之間鋪咗條新路。iThome 報道,公開預覽中嘅動態 WinRT projection,畀 Electron 同一般 Node.js 程式用 JavaScript 或 TypeScript 呼叫部分 Windows API。最實際嘅價值係少養一批專用橋接程式,尤其 app 只想加檔案選擇器、通知、剪貼簿或者裝置端 AI,開發團隊未必要為幾項功能額外開一套 C++ 或 C# 工程。
點解 Electron 一直要多行一步
Electron 個介面雖然用網頁技術寫,背後仍係 Chromium 加 Node.js。當 app 想用 Windows 獨有功能,Node.js 本身冇相應介面,常見做法係寫 native addon,再經 Node-API、C++ 或 C# 接落 WinRT。麻煩唔止係多寫幾個函式:團隊仲要準備 MSVC、Windows SDK 同編譯流程,又要處理 Electron 內置 Node.js 嘅 ABI。升級 Electron 時,native module 有機會要重編,x64、Arm64 同唔同版本亦要逐個測。

圖片:Microsoft
今次實際慳走邊幾層工序
新方案會讀取 Windows SDK 或 Windows App SDK 嘅 .winmd metadata,再產生 JavaScript wrapper 同 TypeScript declaration。執行時,@microsoft/dynwinrt 呢個預先編譯好嘅共用 runtime 會負責呼叫底層 WinRT。API metadata 更新後,只要新版本保持相容,開發者就可以重新產生 bindings,唔使為每個 class 重寫 addon。WinApp CLI 亦可以幫手處理 SDK、manifest、bindings 同開發用 package identity,原本分散幾處嘅設定,可以集中用同一套指令搞掂。
例如一個 Electron 內部工具,想彈出有進度列同按鈕嘅 Windows 通知,或者將帶格式內容放入剪貼簿,以往可能要自己包一層 native code;而家支援範圍內可以直接喺 Electron main process 呼叫。官方亦示範喺相容 Copilot+ PC 用 Phi Silica 做摘要,不過呢個例子要裝置支援,manifest 仲要申報受限制嘅 systemAIModels capability,唔係裝個 npm package 就任何電腦都跑到。

圖片:Microsoft
Electron 冇突然變成原生 app
個名容易令人以為 JavaScript 已經全面直通 Windows,其實中間仍有一個 native runtime,只係微軟將佢做成共用元件,開發者毋須逐個 API 自己維護。Electron 原有嘅 Chromium、記憶體用量、啟動速度同介面渲染方式都冇因而改變,呢次改善集中喺 Windows 功能整合同工程維護。官方文章亦講明主要目標係 AI、儲存、通知、網上連線等 data-style API;WebView2 唔喺產生範圍,WinUI 等 UI 功能亦有額外執行緒同生命週期要求。
邊類 app 最值得試
Windows-first Electron app、公司內部工具,同已有大量 JavaScript 開發人手但間中要接系統功能嘅團隊,會最容易食到好處。跨平台 app 就要繼續用 process.platform 分流,macOS、Linux 版本亦要保留其他實作或者 fallback。另一點係安全邊界:Windows API 最好留喺 main process,再用收窄咗嘅 IPC 介面畀 renderer 呼叫,唔好一口氣將整套系統能力暴露畀網頁內容。
公開預覽仲有幾道閘
Microsoft 現有 Electron setup guide 要求 Windows 11、Node.js、.NET SDK 10,同埋裝有 Native Desktop workload 嘅 Visual Studio。官方亦建議新專案用最新 Electron,但未列出清楚嘅最低 Node.js 或 Electron 版本。共用 runtime 暫時只提供 x64 同 Arm64 binary,未有 x86 版本。正式派發亦要保留產生咗嘅 bindings,視乎 API 準備 package identity,再用 MSIX 等方式封裝同簽署。既然仍係 public preview,API 對應、安裝步驟同支援清單都有機會再改,現階段較適合做 prototype 或非關鍵功能,等版本同 production 支援說法穩定後先擴大使用。
參考來源
- iThome — 微軟替Node.js接上Windows原生API,Electron開發免寫C++或C#橋接 — original report
- Microsoft Developer Blog:Dynamic API projections for Node.js — 微軟官方公告,交代架構、npm 套件、支援範圍、限制同程式例子。
- Microsoft dynwinrt GitHub — 官方開源專案,核對 runtime、codegen、WinRT 呼叫方式同支援架構。
- WinApp CLI:Electron 開發環境設定 — 核對 Windows、開發工具、Electron 設定、debug identity 同跨平台安裝安排。
- WinApp CLI:Electron 封裝指南 — 核對產生 bindings、MSIX、簽署同正式派發時要處理嘅項目。
- Electron Rebuild — Electron 官方工具文件,補充 native Node.js module 點解要配合 Electron 版本重建。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







