1. Wails 是什么?
在桌面应用开发领域,Electron 无疑是一匹黑马,它让前端开发者也能做出高质量的跨平台桌面应用。但对 Go 开发者来说,传统 GUI 库不是太老旧就是开发体验不佳,这时候,Wails 出现了。
Wails 是一个开源项目,允许开发者使用 Go 编写后端逻辑,前端则用 HTML、CSS 和 JavaScript 构建 UI,实现现代桌面应用开发的新组合。它可以让你用 Go 写后端逻辑,再用 Vue、React、Svelte 等前端框架渲染界面,最后打包成一个原生应用,在 Windows、macOS、Linux 上流畅运行。
简而言之:
用 Wails,Go 不只是写命令行工具,也可以优雅"上桌面"。
2. 为什么选择 Wails?
相比传统的桌面开发框架,Wails 有几个显著优势:
- 轻量级、高性能:不像 Electron 动辄几百兆的包体,Wails 的应用体积控制得很好。
- Go 语言生态:可以复用 Go 的所有生态资源,如高并发、网络库等。
- 跨平台:一次开发,三端运行(Windows/macOS/Linux)。
- 支持现代前端框架:React、Vue、Svelte、Vanilla JS 等随你选。
如果你是一位 Go 开发者,想要开发一个带 GUI 的工具软件,Wails 是你不可错过的选择。
3. 快速开始:5分钟跑起来一个 Wails 应用
准备工作:
- 安装 Node.js(用来跑前端)
- 安装 Go(推荐 1.20 以上)
- 安装 Wails CLI:
bash
go install github.com/wailsapp/wails/v2/cmd/wails@latest
初始化一个新项目:
csharp
wails init -n myapp -t vue
-t 后面的参数可以根据自己的实际情况来选,常见有 vanilla、vue、svelte、react 等。
进入项目目录并运行:
bash
cd myapp
wails dev
Boom!你会看到一个现代感十足的 GUI 应用窗口,背后是你熟悉的 Go 程序在驱动。

4. 前后端如何通信?
Wails 提供了简单直观的前后端通信机制。你可以在 Go 代码中导出函数,在前端直接调用它。
比如,我们在 backend.go
中写一个函数:
go
func (a *App) Greet(name string) string {
return "你好, " + name + "!"
}
然后在前端中调用它(以 Vue 为例):
javascript
import { Greet } from '../wailsjs/go/main/App'
Greet("小明").then(result => {
console.log(result) // 输出:你好,小明!
})
这种方式既简单又强大,适合处理业务逻辑、文件操作、调用系统 API 等任务。
5. 打包发布:一键生成桌面应用
开发完成后,只需一条命令即可打包项目:
wails build
默认会根据系统打包出对应平台的可执行程序,并生成安装文件。无论是发送给客户还是部署内部使用,都非常方便。
6. 应用场景举例
Wails 适合各种需要界面但又希望保持高性能和小体积的工具类软件,例如:
- 后台管理工具
- 网络抓包/分析器
- 文件整理工具
- 简易的 Markdown 编辑器
- 数据同步助手
尤其是那些对响应速度和系统资源要求较高的桌面应用,Wails 相比 Electron 有明显优势。
7. 总结
Wails 的出现,极大地拓宽了 Go 开发者的能力边界。它用 Web 技术赋能桌面应用,用 Go 提供强大的后台处理能力,结合成一种既现代又高效的桌面开发方案。
如果你是 Go 爱好者,想要你的工具"长出界面",那就赶紧试试 Wails 吧。下一款火爆的桌面神器,或许就出自你的手中!
想了解更多 Wails 的使用细节和高级功能?欢迎留言交流,我们可以一起用 Go 玩出新花样!🌈