注册 登录

清河洛

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目录


网址导航