Wails 框架
Wails 是一个使用 Go 和 Web 技术编写跨平台桌面应用的框架
一、功能
- 原生菜单、对话框、主题和半透明
- Windows、macOS 和 linux 支持
- 内置 Svelte、React、Preact、Vue、Lit 和 Vanilla JS 的模板
- 从 JavaScript 轻松调用 Go 方法
- 自动将 Go 结构体转换为 TypeScript 模块
- Windows 上不需要 CGO 或外部 DLL
- 使用 Vite 的实时开发模式
- 可以轻松创建、构建和打包应用的强大命令行工具
- 丰富的运行时库
- 使用 Wails 构建的应用程序兼容 Apple 和 Microsoft 商店
二、安装
支持的平台
- Windows 10/11 AMD64/ARM64
- MacOS 10.13+ AMD64
- MacOS 11.0+ ARM64
- Linux AMD64/ARM64
依赖
- Go 1.18+
- NPM (Node 15+)
运行命令go version
和npm --version
检查依赖是否安装,除了以上外,还需要安装特定平台的依赖:
- Windows 平台需要 WebView2(系统默认安装)
- Macos 平台需要安装 xcode 命令行工具
- Linux 需要标准的 gcc 构建工具以及 libgtk3 和 libwebkit
还可选以下依赖 - UPX:用于压缩您的应用程序
- NSIS:用于生成 Windows 安装程序
安装 Wails
go install github.com/wailsapp/wails/v2/cmd/wails@latest
运行wails doctor
将检查您是否安装了正确的依赖项
三、开发
1、初始化项目
CLI 已安装,可以使用wails init
命令生成一个新项目
wails init -n myproject -t react
除了 react 外,还支持更多前端框架:Svelte、React、Vue、Preact、Lit、Vanilla
项目结构概要
- /main.go 主应用
- /frontend/ 前端项目文件
- /build/ 项目构建目录
- /build/appicon.png 应用程序图标
- /build/darwin/ Mac 特定的项目文件
- /build/windows/ Windows 特定的项目文件
- /wails.json 项目配置
- /go.mod Go module 文件
- /go.sum Go module 校验文件
接下来可以修改 go 程序和前端代码实现功能,使用wails dev
在开发模式下运行您的应用程序
2、编译项目
运行wails build
编译项目并将构建的可用于生产的二进制文件保存在 build/bin 目录中,更多可选参数:
-platform:为指定的平台(逗号分割)构建,如:windows/arm64、windows/arm64
-upx:使用“upx”压缩最终二进制文件
-clean:清理 build/bin 目录
四、原理
Wails 应用程序是一个带有一个 webkit 前端的标准的 Go 应用程序。 应用程序的 Go 部分由应用程序代码和一个运行时库组成,该库提供了许多有用的操作,例如控制应用程序窗口。前端是一个 webkit 窗口,将显示前端资源。前端还可以使用运行时库的 JavaScript 版本。最后,可以将 Go 方法绑定到前端,这些将显示为可以调用的 JavaScript 方法,就像它们是原生 JavaScript 方法一样。
更多内容参考 官方文档