Go的wails简介及命令
qingheluo2024-08-26清河洛230
wails是一个使用 Go 和 Web 技术编写桌面应用的项目,类似于Electron其根本就是将Go和前端进行结合,前端控制程序的界面和交互,Go提供后台的逻辑运算wails程序是一个带有一个webkit前端的Go程序。 Go部分由程序代码和一个运行时库组成,控制应用程序窗口及后台的逻辑运算。 前端是一个webkit窗口,控制程序的渲染界面和交互操作前端可以使用JavaScript版本的Go运行时库,将Go方法绑定到前端,实现前端和GO程序的交互与Electron将整个浏览器程序打包到软件中导致软件包过大不同,wails依赖的是一个小型的浏览器运行时库并且打包时不会打包至软件中,仅在需...
wails是一个使用 Go 和 Web 技术编写桌面应用的项目,类似于Electron
其根本就是将Go和前端进行结合,前端控制程序的界面和交互,Go提供后台的逻辑运算
wails程序是一个带有一个webkit前端的Go程序。 Go部分由程序代码和一个运行时库组成,控制应用程序窗口及后台的逻辑运算。 前端是一个webkit窗口,控制程序的渲染界面和交互操作
前端可以使用JavaScript版本的Go运行时库,将Go方法绑定到前端,实现前端和GO程序的交互
与Electron将整个浏览器程序打包到软件中导致软件包过大不同,wails依赖的是一个小型的浏览器运行时库并且打包时不会打包至软件中,仅在需要时进行调用,这就导致了wails打包的软件体积非常小,但是需要在运行软件的电脑上安装浏览器运行时库
wails的github项目地址:点击查看
wails安装
要安装wails,需要提前安装好依赖项
1、Node+npm 2、浏览器运行时 在Windows上使用的是基于Chromium构建的Microsoft Webview2库,下载地址:点击下载 其他平台如Linux或MacOS可以参考官方文档,点击查看
wails为我们提供了一个同名的命令行工具,用于项目的创建、相关库下载和编译等操作
go install github.com/wailsapp/wails/v2/cmd/wails@latest
安装完成后运行wails version命令查看版本号来检验是否安装成功
wails命令
build 编译打包程序 dev 开发模式运行程序 doctor 诊断当前依赖环境 init 创建并初始化一个wails项目 update 更新命令行工具 show 显示详细信息 generate 代码生成工具 version 打印命令行工具版本号
wails doctor
运行诊断程序诊断当前系统的wails开发所需依赖的安装情况
wails init
用于创建并初始化项目
-n <obj_name> 项目名称,为必填项 -d <obj_dir> 项目目录,默认为项目名 -g 初始化git存储库 -l 可用项目模板列表 -q 禁止输出到控制台 -t <tpl_name> 要使用的项目模板,可以为-l显示的名称,也可以为github上的远程模板URL,默认值为vanilla -ide <ide_name> 生成指定IDE项目文件
wails build
wails build命令用于将项目编译打包为二进制文件
-clean 清理 build/bin 目录 -compiler "str" 使用其他版本的go程序编译,需要指定其他版本go.exe的绝对路径或添加到环境变量 -debug 允许在程序中保留调试信息并显示devtools -devtools 允许在程序窗口中使用devtools(当不使用-debug时) Ctrl/Cmd+Shift+F12可用于打开devtools窗口 注意:此选项将使您的应用程序在Mac应用商店指南中失败 -dryrun 打印构建命令但不执行它 -f 强制重新构建应用 -garbleargs 传递给 garble 的参数 默认"-literals -tiny -seed=random" -ldflags "flags" 传递给编译器的额外 ldflags -m 编译前跳过 mod tidy -nopackage 不打包应用程序 -nocolour 在输出中禁用颜色 -nosyncgomod 不同步 go.mod 中的 Wails 版本 -nsis 为 Windows 生成 NSIS 安装程序 -o out_file 输出文件名,默认为项目名 -obfuscated 使用 garble 混淆应用程序 -platform 指定编译平台,如: windows/amd64 不指定系统优先使用环境变量platform,没有则使用runtime.GOOS 不指定架构优先使用环境变量arch,没有则使用runtime.GOARCH -race 使用 Go 的竞态检测器构建 -s 跳过前端构建 -skipbindings 跳过 bindings 生成 -tags "tags" 传递给Go编译器的构建标签 -trimpath 从生成的可执行文件中删除所有文件系统路径 -u 更新项目的 go.mod 以使用与 CLI 相同版本的 Wails -upx 使用 “upx” 压缩最终二进制文件 -upxflags 传递给 upx 的标志 -v int 详细级别 (0 - silent, 1 - default, 2 - verbose) -webview2 WebView2未安装时的安装策略:download,embed,browser,error. download -windowsconsole 保留Windows构建控制台窗口
wails dev
开启"实时开发"模式,将启动一个监控程序,编译并自动运行程序,当检测到源代码有改变时将自动重新编译或加载
命令运行后如果关闭应用程序窗口将退出"实时开发"模式,当开启"实时开发"模式时
1、自动修改go.mod文件中的wails依赖版本为当前版本 2、应用程序自动编译并运行 3、启动一个监控进程,如果检测到Go代码修改会自动重新编译,如果检测到前端的静态资源改变会自动重新加载该资源(而不是重新编译) 4、监控进程还会同时启动一个网络服务,可以通过浏览器来调试程序
改命令的常用选项
-appargs "args" 以 shell 样式传递给应用程序的参数 -assetdir "./path/to/assets" 从指定目录读取静态资源,默认使用编译后的FS静态资源 -browser 在启动时打开浏览器并导航到本地网址 -compiler "str" 使用其他版本的go程序编译,需要指定其他版本go.exe的绝对路径或添加到环境变量 -debounce 检测到静态资源改变后重新加载的延时,单位毫秒,默认100 -devserver "host:port" 绑定的开发服务器地址 -extensions 触发重新构建的文件扩展,多个使用逗号分隔,默认"go" -forcebuild 强制构建应用程序 -ldflags "flags" 传递给编译器的ldflags -loglevel "level" 使用日志级别,可选:Trace, Debug(默认), Info, Warning, Error -nocolour 关闭彩色命令行输出,默认false -noreload 静态资源更改时禁用自动重新加载 -nosyncgomod 不同步go.mod中的Wails版本,默认false -race 使用 Go 的竞态检测器构建 false -reloaddirs 触发重新加载的附加目录,多个使用逗号分隔 -s 跳过前端构建,默认false -save 将指定的 assetdir、 reloaddirs、 wailsjsdir、 debounce 、 devserver 和 frontenddevserverurl 标志的值保存到 wails.json 以成为后续调用的默认值 -skipbindings 跳过 bindings生成 -tags "tags" 传递给Go编译器的构建标签 -v 详细级别 (0 - silent, 1 - standard, 2 - verbose) -wailsjsdir 生成的Wails JS模块目录
wails generate
用于生成一些特定的代码
wails generate template :构建模板,用于生成项目 -name 模板名称 -frontend "path" 模板中使用的前端项目的路径 wails generate module 为应用程序生成wailsjs目录