使用lua.vm.js从JavaScript中读取Lua变量

我正在使用lua.vm.js javascript库来在javascript中执行一些lua代码。代码工作良好(它是一个非常简单的lua示例),但我不能将在Lua中声明的任何变量传递到我的javascript上下文中。

该项目中的REPL允许我测试以下Lua代码:

local key = { k1 = value}
local data = {
[key] = "something",
a = { b = 3 },
}
local v1 = data [key]
local v2 = data.a.b
print(v1)
print(v2)

在输出窗口中,我可以看到v1和v2被打印并且具有正确的值,但我找不到一种方法将数据中的值(例如)分配给js变量。

再简单一点:在执行Lua代码后将key和data的值获取到javascript变量中,这可能吗?

我正在阅读来自lua.vm.js的代码,但我找不到任何指导我朝正确方向的东西。

提前致谢!

点赞
用户282536
用户282536

https://github.com/kripken/lua.vm.js/issues/18 转载。

使用我的分支/派生版本;可以在 https://daurnimator.github.io/lua.vm.js/repl.html 找到 REPL。

当一个 Lua 变量暴露给 JavaScript 时,它是作为函数对象暴露的,并带有 invoke/get/set 等方法。详见 https://github.com/daurnimator/lua.vm.js/blob/master/lua.js#L523

使用你的例子,以某种方式将对象暴露给 JavaScript。比如在 Lua 中:

window.mydata = data
window.mykey = key

然后在 JavaScript 中:

v1 = window.mydata.get(window.mykey)
v2 = window.mydata.get("a").get("b")
console.log(v1)
console.log(v2)
2014-05-29 06:15:40
用户18556747
用户18556747
<script src="./lua.vm.js"></script>

<script type="text/lua">
  print(js.global:myShow("test"))
</script>

<script>
myShow = function show(value)
{
    return value + " me"
}
</script>
<script src="./lua.vm.js"></script>

<script type="text/lua">
  print(js.global:myShow("test"))
</script>

<script>
myShow = function show(value)
{
    return value + " me"
}
</script>
2022-03-23 12:50:50