gojaでgoからjavascript関数呼出し/jsからgo関数呼出し

2024/04/01

Categories: golang javascript

goの中でjavascriptを実行できるgoja

goのコードからjavascript関数を呼び出し/js関数からgo関数を呼び出すことができる。

// 返り値
// 1つ目:js関数がreturnした値
//   この例ではanyにしているけど適宜
// 2つ目:js関数から例外で飛び出した場合にgojaのerrorでwrapしたエラー
var jsFunc func(int, http.ResponseWriter, map[string]any) (any, error)

vm := goja.New()
if _, err := vm.RunProgram(compiledJS); err != nil {
    // omit
}
if f := vm.Get("jsFunc"); f == nil {
    // omit
} else if err := vm.ExportTo(f, &jsFunc); err != nil {
    // omit
}

jsRet, err := jsFunc(123, w, map[string]any{"yes", 456})

js関数にgoのオブジェクトを渡して、js関数からメソッド等呼び出せる

function jsFunc(code, w, opt) {
 	w.Header().Set("content-type", "text/plain");	
}

環境

>> Home