Skip to content

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 作为前端包管理

参考

访问量 PV:Blocked用户数 UV:Blocked