编辑
2022-05-22
undefined
00
请注意,本文编写于 848 天前,最后修改于 28 天前,其中某些信息可能已经过时。

目录

运行 js 代码

go
import ( "fmt" "github.com/robertkrimen/otto" ) func main() { vm := otto.New() result, _ := vm.Run(` foo = 1 + 2 console.log(foo) result = foo; `) fmt.Println(result) // 4 }

调用函数

go
func main() { vm := otto.New() vm.Run(` function hello(name){ console.log('hello ' + name) return 'OK' } `) ret, _ := vm.Call("hello", nil, "kuizuo") fmt.Println(ret) }

这里以 go 调用 js 的 CryptoJS 来实现加密演示。

go
func main() { bytes, _ := ioutil.ReadFile("md5.js") vm := otto.New() vm.Run(string(bytes)) ret, _ := vm.Call("MD5", nil, "a123456") fmt.Println(ret) }

封装成 go 函数

不过这样写法不方便,可以将其封装为一个 go 函数来调用。

go
import ( "fmt" "io/ioutil" "github.com/robertkrimen/otto" ) var vm = otto.New() func initJs() { bytes, _ := ioutil.ReadFile("md5.js") vm.Run(string(bytes)) } func md5(content string) string { ret, err := vm.Call("MD5", nil, content) if err != nil { return "" } return ret.String() } func main() { initJs() result := md5("a123456") fmt.Println(result) }

本文作者:任浪漫

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!