golang调用本地chrome实现轻量化UI,可做测试和小工具
2023-09-10 本文已影响0人
Tenny1225
golang目前没有官方ui框架,第三方的ui库有时又过重,如果使用go编写一些小工具或者测试程序有什么更好的选择呢,在这种需求下我编写了一个https://github.com/tenny1225/webui
的库,它可以启动本地chrome浏览器实现轻量化ui。
webui的实现思路是开启http服务,然后使用go的cmd启动本地的chrome并打开指定网页,web端和go使用websocket进行通信。
一下是一个例子
package main
import (
"github.com/tenny1225/webui"
)
type X struct {
w webui.Window
}
func (*X) Test(a int64) int64 {
return a * 2
}
func (x *X) Gds() {
x.w.Eval(`document.getElementById("xz").style.color="#ff3300";`,nil)
}
func main() {
//最后一个参数指定一个本地的文件夹
w := webui.NewWindow("xz", 300,300,400, 300, "./html")
w.Run(func() {
w.Navigation("xz.html")
w.Bind(&X{w})
})
}
webui可以实现结构体方法到网页端window方法的主动映射,这里的方法映射和回调使用了反射的方法目前实现了基本数据类型的传递。