Categorygithub.com/cokeBeer/execjs
repositorypackage
1.0.1
Repository: https://github.com/cokebeer/execjs.git
Documentation: pkg.go.dev

# README

go-exec-js

Introduction

参考PyExecJS,提供了在go语言里执行js的能力。由于go是强类型语言,所以在迁移的时候使用interface{}作为替代传递任意类型的参数。

Requirement

需要本地path里面配置了node。

Intall

go get -u github.com/cokeBeer/execjs

Usage

可以使用Eval方法获取表达式的值,这将输出12

output, err := execjs.Eval(`1+"2"`)
if err != nil {
    log.Fatal(err)
}
fmt.Println(output)

可以使用Compile方法编译一个Context,然后调用。这将输出3

c, err := execjs.Compile(`function add(x, y) {
    return x + y;
    }`)
if err != nil {
    log.Fatal(err)
}
output, err := c.Call("add", 1,2)
if err != nil {
    log.Fatal(err)
}
fmt.Println(output)

更多用法参见测试文件execjs_test

注意:因为返回的是interface{}类型的变量,使用时要进行类型断言,例如

output.(string) //这将输出值变为string类型
output.([]interface{}) //这将输出值变为slice类型

Thanks to

PyExecJS