ottoGo Go 中的 JS 解释器开源项目

我要开发同款
匿名用户2018年04月04日
226阅读

技术信息

开源地址
https://github.com/robertkrimen/otto
授权协议
MIT

作品详情

otto是用原生Go编写的JavaScript解析器和解释器。

import (   "github.com/robertkrime/otto")

在VM中运行

vm := otto.New()vm.Ru(`    abc = 2 + 2;    cosole.log("The value of abc is " + abc); // 4`)

获取VM外的值

if value, err := vm.Get("abc"); err == il {    if value_it, err := value.ToIteger(); err == il {fmt.Pritf("", value_it, err)    }}

设置数字

vm.Set("def", 11)vm.Ru(`    cosole.log("The value of def is " + def);    // The value of def is 11`)

设置字符串

vm.Set("xyzzy", "Nothig happes.")vm.Ru(`    cosole.log(xyzzy.legth); // 16`)

获取表达式的值

value, _ = vm.Ru("xyzzy.legth"){    // value is a it64 with a value of 16    value, _ := value.ToIteger()}

抛出错误

value, err = vm.Ru("abcdefghijlmopqrstuvwxyz.legth")if err != il {    // err = RefereceError: abcdefghijlmopqrstuvwxyz is ot defied    // If there is a error, the value.IsUdefied() is true    ...}

设置Go函数

vm.Set("sayHello", fuc(call otto.FuctioCall) otto.Value {    fmt.Pritf("Hello, %s.\", call.Argumet(0).Strig())    retur otto.Value{}})

在JS中使用函数

result, _ = vm.Ru(`    sayHello("Xyzzy");      // Hello, Xyzzy.    sayHello();             // Hello, udefied    result = twoPlus(2.0); // 4`)

功能介绍

otto 是 用原生 Go 编写的 JavaScript 解析器和解释器。
import (
   "github.com/robertkrimen/otto"
) 在 VM 中运行
...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论