代码拉取完成,页面将自动刷新
目录结构
go_gui_basic_binding 项目根目录
├─app 你写代码的目录
│ ├─bindHandle go方法声明javaScript方法名目录
│ │ ├─bind.go go方法声明javaScript方法名文件
│ │
│ ├─function 绑定到javaScript的方法目录
│ ├─func.go 绑定到javaScript的方法文件
│
├─config 配置文件命令
│ ├─config.toml 配置文件,参考goFrame文档
│
├─database 数据文件目录
│ ├─db 我使用sqlite数据库,存放数据库文件
│
├─frame 做了简单的封装,符合自己的使用习惯
│
├─output 打包后的可执行文件目录
│
├─resources 静态文件目录
│ ├─app 模板文件目录,界面文件
│ │ ├─static
│ │ ├─js
│ │ ├─app.js 基础通讯函数
│ │ ├─func.js 提供给go的方法
│ │
│ ├─icon.* win,mac,linux端的图标
│
├─main.go 南天门
│
│
创建主页面:./resources/app/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="static/lib/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="static/lib/layui/css/layui.css">
</head>
<body>
<div id="test">
</div>
<script src="static/lib/layui/layui.all.js"></script>
<script src="static/js/func.js"></script>
<script src="static/js/app.js"></script>
<script type="module">
// 引入func.js和app.js
// 其他的按个人需要,可以引入VUE,jq,layui等 非常银杏
// 按个人需求初始化对应类库,我这里需要jq就声明了个$方便在func.js里使用
layui.use(['jquery'], function(){
$ = layui.jquery;
});
// 初始化app
app.init(function (data) {
console.log(data)
},function () {
// 初始化完成
app.goFunc("test","测试调用go方法")
});
// 初始化完成可以在任何地方调用
// 比如
app.goFunc("go绑定的方法名", '传递给go的参数')
</script>
</body>
</html>
绑定主页
// 是否开启浏览器控制台
app.Debug = true
initData := app.BaseStruct{
Asset: Asset,
AssetDir: AssetDir,
RestoreAssets: RestoreAssets,
}
// 在main.go内绑定入口界面文件
ws := &astilectron.WindowOptions{
BackgroundColor: astikit.StrPtr("#fff"),
Center: astikit.BoolPtr(true),
// 窗口名称
Title: astikit.StrPtr("主窗口"),
// 启动窗口宽度
Width: astikit.IntPtr(700),
// 启动窗口高度
Height: astikit.IntPtr(700),
}
// 入口界面 我们刚刚创建index.html就填index
app.Run("index", ws, initData)
启动程序
go get -u github.com/asticode/go-astilectron-bundler/...
go install github.com/asticode/go-astilectron-bundler/astilectron-bundler
export PATH=$PATH:$GOPATH/bin
// 编译
astilectron-bundler bd
// 启动,win的cmd不支持*通配符,正经人谁用cmd,换一个吧
go run *.go
astilectron-bundler // 打包当前系统软件
astilectron-bundler -l // 打包Linux系统软件
astilectron-bundler -d // 打包MacOs系统软件
astilectron-bundler -w // 打包windows系统软件
astilectron-bundler -h // 查看命令
基础用法:编写提供给js的go方法
// ./app/function/finc.go 文件内编写
func Message(key string) {
fmt.Println("js调用了go的Message")
}
// 绑定到js ./app/bindHandle/bind.go 文件内编写
func Init() {
// 绑定刚刚写的Message方法
// bind.Bind("js使用的key",方法)
bind.Bind("Message",function.Message)
}
// js端调用
<script type="module">
// 初始化app
app.init(function (data) {
console.log(data)
},function () {
// 初始化完成 调用go方法
app.goFunc("Message","传递给go的参数")
});
// 初始化完成可以在任何地方调用
// 比如
app.goFunc("Message", '传递给go的参数')
</script>
// 注意事项 go在接收int参数的时候,js传递'1'是无法接收到的,注意类型
// 建议string
基础用法:编写提供给go的js方法
// ./resources/app/static/js/finc.js 文件内编写
function test(aaa) {
console.log("调用js 方法成功")
console.log(aaa)
}
// go端调用
// bind.JsFunc("方法名", "参数","窗口名称,默认主页")
bind.JsFunc("test", "测试调用js方法")
基础用法:创建新窗口 - go端
windows.Create("模板名称,不用.html", "窗口名称", 窗口参数, 是否打开浏览器控制台)
_, _ = windows.Create("bb", "tips", &astilectron.WindowOptions{
Height: astikit.IntPtr(300),
Width: astikit.IntPtr(300),
Title: astikit.StrPtr("子窗口"),
}, true)
基础用法:日志输出 - go端
// 输出日志到浏览器控制台
log.Log("调用go方法成功")
log.Error()
没了没了
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。