官方js调用go方法文档:https://wails.io/zh-Hans/docs/howdoesitwork
a)在app.go文件里写一个要js调用的go函数:
func (a *App) JSCallGo(data1 string) string {
return “test”
}
b)运行 wails dev 命令,系统将会在frontend/wailsjs/go中自动生成JSCallGo函数的export对象。
c)js调用这个go方法,在js文件或vue文件或其他框架的文件中:
调用方法1(导入调用):
import {JSCallGo} from "../../wailsjs/go/main/App";
JSCallGo().then((info)=>{});
调用方法二(直接调用):
window.go.main.App.JSCallGo().then((info)=>{});
===============================================
以下用映射函数方式写调用:
app.go
// JSCallGo js调用go方法,采用“白名单+参数”机制,仅返回msg
func (a *App) JSCallGo(funcName string, data1 string, data2 string) string {return MapForJSCallGo(funcName, data1, data2)
}// MapForJSCallGo js调用go函数方法的映射白名单,采用“白名单+参数”机制,仅返回msg
func MapForJSCallGo(funcName string, data1 string, data2 string) string {log.Println("JSCallGo映射:", funcName, data1, data2)back := ""switch funcName {case "Test":log.Println("js调用go方法成功:", funcName)back = "Test:OK。data1=" + data1 + ";data2=" + data2breakcase "GetOS":back = runtime.GOOS()breakdefault:log.Println("未知的JSCallGo回调函数:", funcName)back = "Error:funcName" + funcNamebreak}return back
}
js_call_go.js
// 获取映射函数
let go_func;
try {go_func = window.go.main.App.JSCallGo;console.log("js调用go函数的映射名单:", go_func);
}catch (e) {console.log("window.JSCallGo映射函数不存在!");
}// 映射函数的实现方法
// go_func(必要映射的函数名(string), 可选参数1(string), 可选参数2(string))
const js_call_go = {Test: function (data1, data2){return go_func("Test", "", "");},GetOS: function (){return go_func("GetOS");},
};
// js调用举例
js_call_go.Test("test1", "test2").then(msg=>{
console.log("JSCallGo-Test:", msg);
});
js_call_go.GetOS().then(info=>{
console.log("JSCallGo-GetOS:", info);
});
映射优点:分离了Go方法,提示了js方法。