Wails 框架

admin
admin 2023年08月27日
  • 在其它设备中阅读本文章

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 versionnpm --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 方法一样。
wails 架构.jpg

更多内容参考 官方文档