放棄 Electron 與 Tauri? 我用 Wails + HTMX 打造 3MB 的跨平台桌面應用

放棄 Electron 與 Tauri? 我用 Wails + HTMX 打造 3MB 的跨平台桌面應用

Web 仔要有 Web 仔的自覺 前言 前陣子收到了 Murphy 的需求,嘗試使用 Tauri 寫了一個桌面 App。Tauri 結合 Rust 與 React 的體驗相當不錯,打包出來的體積也十分理想。 但身為一個主要撰寫 Golang 的後端工程師,內心總有一個聲音:「如果能用 Go 來寫桌面應用,那該有多好?」 眾所周知,Golang 在原生的 Desktop GUI 框架上一直沒有特別強勢的殺手級專案(過去使用 Fyne 的經驗不算太好)。在環顧了一眾基於 Chromium 的 Electron 或是基於系統 WebView 的 Tauri 後,決定走一條稍微不一樣的「老路」:使用 Wails 搭配 HTMX 與 Templ。 最終的產物就是 Dub 一個跨平台的批次檔案重新命名工具。更甚,在 Linux 上打包出來的可執行檔只有約 3MB,並且完美支援 macOS 與 Linux,且幾乎沒有複雜的前端狀態管理負擔。 為什麼是 Wails + HTMX? 在選擇桌面應用程式的技術方案時,我們通常有幾個考量 Electron: 開發體驗極佳,生態系最豐富,但代價是動輒上百 MB 的體積與高昂的記憶體佔用。對於一個小工具來說,太過沉重。(這也是我優先選擇 Zed.dev 作為主要編輯器的原因) Tauri: 效能極佳,體積小,但後端需要寫 Rust。雖然 Rust 很香,但有時候只想用最熟悉的 Go 快速把邏輯刻出來。 Wails: 與 Tauri 類似,採用前端網頁技術結合系統原生 WebView,但後端語言是 Golang。 既然選了 Wails,前端該用什麼? 現代前端框架(React, Vue, Svelte)通常需要建置複雜的 SPA(Single Page Application),並透過 JSON API 與後端溝通。但對於一個狀態並不複雜的工具軟體,不想在前端再維護一份狀態。 ...