Wails v3 正式發布:用 Go 寫桌面應用,體積僅 12MB,效能飆升 40%!

一個 12MB 的桌面應用,啟動不到 0.5 秒,記憶體佔用僅 70MB——
前端仍是 Vue/React,後端是純 Go,無需 Node.js、不嵌入 Chromium,雙擊即可執行。

如果你曾因 Electron 的臃腫而卻步,又覺得 Tauri 的 Rust 門檻太高,那麼 Wails v3 的正式發布,或許正是 Go 開發者與前端工程師共同等待的「理想平衡點」。


一、桌面開發的新選擇:Go 的優雅回歸

過去幾年,桌面應用框架基本被兩大陣營主導:

  • Electron:簡單但笨重;
  • Tauri:輕量但需 Rust。

Wails 自 2019 年誕生以來,一直堅持一條獨特路線:

用 Go 建構高效能後端,用 Web 技術建構現代 UI,最終編譯為單一檔案的原生應用。

如今,隨著 Wails v3 在 2025 年底正式 GA(General Availability),它不只完成架構重構,更帶來:

  • 全新 WebEngine Core 渲染引擎
  • 二進位通訊協定(吞吐量提升 3 倍)
  • 多視窗原生支援
  • Bazel 多平臺建置系統
  • 企業級外掛生態

最重要的是——前端開發者幾乎無需改變習慣


二、v3 為何能比 v2 再小 30%?效能提升從何而來?

Wails v3 的核心突破,在於徹底重構底層架構:

元件 Wails v2 Wails v3
渲染引擎 系統 WebView(WebView2 / WebKit) WebEngine Core(精簡版 Blink 內核)
通訊層 JSON over IPC Protocol Buffers 二進位協定
記憶體佔用 ≈120MB ≈70MB(降低 40%)
啟動時間 0.8–1.2s 0.4–0.6s
建置系統 Go build + Makefile Bazel 多平臺建置(增量編譯提速 60%)
原生整合 基礎 API WinUI 3 / SwiftUI / GTK 4 深度支援

關鍵升級解析:

WebEngine Core:告別 WebView2 相依

v3 不再依賴使用者是否安裝 WebView2(Windows 常見痛點),而是內建 精簡版 Blink 引擎,移除冗餘模組,基礎應用啟動記憶體從 120MB 降至 70MB

二進位通訊:消息吞吐量達 6000 條/秒

前端呼叫 Go 方法不再透過 JSON 序列化,而是使用 Protocol Buffers 編碼的二進位流,在高頻互動場景(如即時圖表、日誌串流)效能提升 300%

外掛系統:wails plugin install 即可擴充

官方已上線外掛市集,支援資料庫連線、AI 推理、OAuth 登入等,社群可自由貢獻外掛。


三、前端開發者會被 Go 勸退嗎?

完全不會!Wails 的設計哲學始終是:Go 只做它最擅長的事——系統互動與高效能計算

比如,從前端儲存一個檔案:

<!-- frontend/src/App.vue (Vue 3 + TypeScript) -->
<script lang="ts">
import { saveFile } from '@/wailsjs/go/main/App';

const handleSave = async () => {
  await saveFile('Hello from Wails v3!');
  alert('Saved!');
};
</script>

而後端只需定義一個公開方法:

// backend/app.go
package main

import "os"

type App struct{}

// 自動暴露為前端可呼叫的函式
func (a *App) SaveFile(content string) error {
    return os.WriteFile("output.txt", []byte(content), 0644)
}

Wails 會自動產生類型安全的 TypeScript SDK,無需手動撰寫橋接程式,也不需要 REST API 或 WebSocket。


四、實測:v3 vs v2 vs Electron

我們構建一個帶聊天室、本機 SQLite 存儲、系統通知的桌面應用,測得指標如下:

指標 Electron Wails v2 Wails v3
打包體積 148 MB 18.2 MB 12.3 MB
冷啟動時間 2.4 s 0.9 s 0.5 s
記憶體佔用(空窗) 295 MB 120 MB 70 MB
訊息吞吐量 2000 msg/s 2000 msg/s 6000 msg/s
首屏載入(含歷史紀錄) 1.8 s 0.7 s 0.3 s

更驚人的是:Wails v3 支援熱重載 2.0——修改 Go 或 Vue 檔案後,應用狀態保留率高達 90%,開發體驗接近純 Web。


五、多視窗、原生選單、沙箱……v3 全都有了

Wails v3 終於補齊企業級應用所需的關鍵能力:

  • 多視窗支援app.NewWindow() 建立獨立視窗,各自管理生命週期;
  • 原生系統選單
// 設定原生選單範例
app.SetNativeMenu(wails.NativeMenu{
    Items: []wails.MenuItem{
        {Title: "Preferences", Action: "showPrefs", Shortcut: "Cmd+,"},
    },
})
  • 自動沙箱隔離:渲染程序與主程序分離,防止 XSS 等攻擊擴散;
  • UPX 壓縮整合:建置時自動壓縮二進位檔,體積再減約 35%。

六、5 分鐘上手 Wails v3

# 1. 安裝 Go 1.21+ 與 Wails CLI
go install github.com/wailsapp/wails/v3/cmd/wails@latest

# 2. 建立 Vue 3 + TypeScript 專案
wails init -n my-app -t vue-ts

# 3. 進入目錄並啟動開發(支援熱重載)
cd my-app
wails dev

# 4. 打包發佈(生成單一檔案可執行檔)
wails build

你會得到一個 約 12MB 的獨立程式,無外部相依,雙擊即可執行。


七、誰在用 Wails v3?

  • AI 新創公司:本機 LLM 客戶端(例如私有知識庫問答工具);
  • 金融科技團隊:加密資料處理、合規稽核工具;
  • DevOps 工程師:Kubernetes (K8s) 叢集監控面板、日誌分析器;
  • 開源社群:多個資料庫 GUI 工具(例如想取代 DBeaver 的輕量選項)正在遷移。

GitHub 上,Wails 主倉庫 Star 數已突破 33.4k,v3 發布後月活躍貢獻者成長 250%


結語:Go + Web,剛剛好

Wails v3 的發布,標誌著它從「個人開發者玩具」正式升級為「企業級桌面開發平台」。

它不追求取代 Electron,也不以 Tauri 為對標。
它只是提供一種可能:用最熟悉的前端,搭配最高效的後端,打造最輕量、最安全、最快速的桌面應用

在這個「資源即成本」的時代,12MB 不僅是一個數字,更是對使用者裝置、網路頻寬與開發效率的尊重。

官網:wails.io
GitHub:github.com/wailsapp/wails
遷移指南:官方提供 wails migrate 工具,支援 v2 → v3 平滑升級

你的團隊用過 Go 做桌面應用嗎?留言區聊聊經驗!


各位網路朋友,如果這篇文章成功引起你的注意,別猶豫,請按讚、分享、留言,讓我們把這份默契延續下去,一起在知識的海洋裡乘風破浪!


原文出處:https://juejin.cn/post/7620637831972061247


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝14   💬10   ❤️2
416
🥈
我愛JS
📝2   💬9   ❤️2
93
🥉
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登