使用html来编写golang图形界面程序(only windows)
使用html来编写golang的GUI程序(only windows), 基于miniblink开源库
go get github.com/raintean/blink
package main
import (
"github.com/raintean/blink"
"github.com/elazarl/go-bindata-assetfs"
"log"
)
func main() {
//设置调试模式
blink.SetDebugMode(true)
//初始化blink模块
err := blink.InitBlink()
if err != nil {
log.Fatal(err)
}
//注册虚拟网络文件系统到域名app
blink.RegisterFileSystem("app", &assetfs.AssetFS{
Asset: bin.Asset,
AssetDir: bin.AssetDir,
AssetInfo: bin.AssetInfo,
})
//新建view,加载URL
view := blink.NewWebView(false, 1366, 920)
//直接加载虚拟文件系统中的网页
view.LoadURL("http://app/index.html")
view.SetWindowTitle("Golang GUI Application")
view.MoveToCenter()
view.ShowWindow()
view.ShowDevTools()
<-make(chan bool)
}
js调用/获取golang中的方法或者值,异常可捕获
main.go
//golang注入方法
view.Inject("GetData", func(num int) (int, error) {
if num > 10 {
return 0, errors.New("num不能大于10")
} else {
return num + 1, nil
}
})
//golang注入值
view.Inject("Data", "a string")
index.js
await BlinkFunc.GetData(10) //-> 11
await BlinkFunc.GetData(11) //-> throw Error("num不能大于10")
BlinkData.Data // -> "a string"
golang调用/获取javascript中的方法或者值,异常可捕获(err变量返回)
index.js
window.Foo = new Date();
window.Bar = function (name) {
return `hello ${name}`;
};
main.go
value, err := view.Invoke("Foo")
value.ToXXX // -> Time(golang类型)
value, err := view.Invoke("Bar", "blink")
value.ToString() // -> "hello blink"
go build -tags bdebug
再次感谢miniblink项目, 另外如果觉得本项目好用请点个星.
欢迎PR, > o <