众所周知,Go主要用于构建API,Web后端,CLI工具。但是除了这些,其实Go还可以做很多其它事情,比如开发桌面应用。

通过Wails框架,我们可以使用Go和Vue.js构建出桌面应用程序。

image

使用Wails开发桌面应用非常的容易,只需要使用简单的命令,我们就可以搭建出运行框架,而且打包应用非常简单,只需要一条命令就可以完成。

Wails提供了将Go代码和Web前端包装到一个二进制文件中的功能。通过Wails CLI,我们可以轻松处理项目的创建,编译和捆绑。

安装

我们可以使用go get非常快速地安装wails cli环境。

go get github.com/wailsapp/wails/cmd/wails wails
wails setup
事件绑定

go和前端通过事件进行绑定,前端绑定golang的方法之后,就可以和golang进行数据的传递,并且这种传递是双向的,前端可以给后端发送数据,后端也可以给前端推送数据。

image
方法调用

后端可以通过Bind方法将实例绑定到app上,然后前端可以通过后端绑定的实例来调用方法。

package main
import (
    "github.com/leaanthony/mewn"
    "github.com/plutov/packagemain/cpustats/pkg/sys"
    "github.com/wailsapp/wails"
)
func main() {
    js := mewn.String("./frontend/dist/app.js")
    css := mewn.String("./frontend/dist/app.css")
    stats := &sys.Stats{}
    app := wails.CreateApp(&wails.AppConfig{
        Width:  512,
        Height: 512,
        Title:  "CPU Usage",
        JS:     js,
        CSS:    css,
        Colour: "#131313",
    })
    app.Bind(stats)
    app.Run()
}
window.backend.instance.functionname
image
总结

Wails的出现为我们使用go开发桌面提供了另一种思路,事件绑定概念使控制应用程序的状态变得非常容易。

当然,Wails还处于成长阶段,目前可能还有些不完善的地方,不过这并不影响我们去学习和使用它,毕竟使用一门语言来做所有事情是我们所期望的,虽然这并不现实。


有疑问加站长微信联系(非本文作者)