Appearance
Wails
Why
若想通过 WEB 技术构建桌面端应用,现在比较成熟的有:Electron 和 Tauri。
其中,Electron 的构建结果自带一个浏览器,包大,仅支持构建桌面端应用。
而 Tauri 的构建结果不带浏览器,使用系统 Webview,较小,进一步支持构建 Android/iOS 应用。但是部分涉及系统、窗口层级的改动,需要使用 Rust。并且构建缓存非常大,构建缓慢。
考虑到目前我的技术栈为 WEB + Go,Wails 构建桌面端应用也成为了一个可选项。
Wails 和 Tauri 一样,使用 Webview 来渲染页面,构建结果较小,构建速度相对较快。目前仅支持桌面端应用。
How
在 Wails 中,可以创建一款 CS 架构的应用。前端界面作为 Client,Go 后端作为 Server。前端通过 HTTP 请求与 Go 服务交互,或通过“调用绑定的 Go 方法”来与 Go 交互。
What
○ 全流程 MVP
准备:
- Go 1.21+
- Node.js 15+
sh
# 安装全局 wails cli
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# 检查环境依赖是否满足 GUI 开发需求
wails doctor
# 创建项目,-n 名称,-t 模板
wails init -n learn-wails -t vue-ts
# 启动开发模式
# 会安装前端依赖,启动前端服务,捕获前端服务的 url 用于访问界面
wails dev
# 启动构建
# 构建结果位置 build/bin/xxx
wails build○ scenario 替换前端项目
- given wails 项目已初始化
- when 删除 frontend 文件夹
- then 初始前端项目清空
- when 通过 vite 或其他前端 cli 创建前端 frontend 项目
- then 生成新 frontend 文件夹
- when 修改新 main.go 中嵌入的前端路径(
//go:embed all:frontend/dist) - then 正确引用前端
- when 修改 wails.json 中的 npm 为 pnpm
- then 改用 pnpm 作为前端包管理