一、什么是 Wails
Wails 是一个 Go 桌面应用框架。用 Go 写后端逻辑,用 HTML/CSS/JS(Vue/React)写界面,打包成一个桌面软件。
对比 Electron:
| 对比项 | Wails | Electron |
|---|---|---|
| 打包大小 | ~5-15 MB | ~150 MB+ |
| 内存占用 | ~30-50 MB | ~200 MB+ |
| 后端语言 | Go | Node.js |
| 前端技术 | Vue/React/任意 | 任意 |
二、环境要求
| 依赖 | 要求 | 作用 |
|---|---|---|
| Go | 1.25+ | 编译后端代码 |
| Node.js | 18+ | 构建前端界面 |
| WebView2 | Windows 11 自带 | 渲染界面(浏览器内核) |
查看版本:
go version # 需要 1.25+
node --version # 需要 18+
npm --version
三、安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
装完后验证:
wails version # v2.13.0
⚠️ 如果终端提示找不到命令,检查
$GOPATH/bin(Windows 上通常是C:\Users\用户名\go\bin或自定义的 GOPATH)是否在系统 PATH 里。Windows 添加 PATH 步骤:系统属性 → 环境变量 → Path 编辑 → 新增
D:\你的GOPATH\bin
四、创建项目
wails init -n myapp -t vue
参数说明:
| 参数 | 含义 | 可选值 |
|---|---|---|
-n | 项目名 | 任意 |
-t | 前端模板 | vue / react / svelte / vanilla |
生成的项目结构:
myapp/
├── main.go ← Go 程序入口
├── app.go ← 绑定给前端的 Go 方法
├── wails.json ← Wails 项目配置
├── go.mod / go.sum ← Go 依赖
├── frontend/ ← 前端界面(Vue 3 + Vite)
│ ├── src/
│ ├── index.html
│ └── package.json
└── build/ ← 打包资源(图标等)
五、运行项目
cd myapp
wails dev
启动过程:
1. go mod tidy ← 整理 Go 依赖
2. Generating bindings ← 生成前后端绑定代码
3. Installing frontend ← npm install 装前端依赖
4. Compiling frontend ← Vite 构建前端
5. Compiling application ← Go 编译后端
6. WebView2 Environment ← 弹出桌面窗口
首次运行需要下载依赖,大约 2-3 分钟。
六、核心文件:app.go
app.go 是前后端之间的桥梁:
package main
import (
"context"
"fmt"
)
type App struct {
ctx context.Context
}
func NewApp() *App {
return &App{}
}
func (a *App) startup(ctx context.Context) {
a.ctx = ctx
}
// Greet 这个方法会被暴露给前端
// 前端可以直接调用 App.Greet("pc")
func (a *App) Greet(name string) string {
return fmt.Sprintf("Hello %s, It's show time!", name)
}
前端 Vue 组件中调用:
import { Greet } from '../wailsjs/go/main/App'
// 调用 Go 方法,就像调用普通 JS 函数
const result = await Greet("pc")
console.log(result) // "Hello pc, It's show time!"
七、开发与构建命令
| 命令 | 用途 |
|---|---|
wails dev | 开发模式,支持热重载 |
wails build | 打包为可执行文件 |
wails init | 创建新项目 |
八、常见问题
问题:go run main.go 报错
Wails 项目不能用 go run main.go 运行,必须用 wails dev 或 wails build。
问题:wails 命令找不到
Go 安装的二进制文件在 $GOPATH/bin 目录下,需要把该目录添加到系统 PATH 环境变量。
问题:首次 wails dev 卡住
通常是 npm install 下载前端依赖较慢。可以取消后手动在 frontend 目录下执行 npm install。
九、小结
| 步骤 | 命令 |
|---|---|
| 安装 Wails | go install github.com/wailsapp/wails/v2/cmd/wails@latest |
| 创建项目 | wails init -n myapp -t vue |
| 运行开发模式 | wails dev |
| 打包发布 | wails build |