【问题标题】:Reading Lua variables from JavaScript using lua.vm.js使用 lua.vm.js 从 JavaScript 读取 Lua 变量
【发布时间】:2022-03-28 10:00:50
【问题描述】:

我使用lua.vm.js javascript library 来获取一些在 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 的代码,但我无法找到正确的方向。

提前致谢!

【问题讨论】:

    标签: javascript lua


    【解决方案1】:

    X-发自https://github.com/kripken/lua.vm.js/issues/18

    使用我的分支/叉子; repl 可以在https://daurnimator.github.io/lua.vm.js/repl.html找到。

    当 Lua 变量暴露给 javascript 时;它作为函数对象公开;使用方法调用/获取/设置/等。见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)
    

    【讨论】:

    • 做到了!我不得不使用你的分支,因为它在原版中不起作用
    • 能否添加调用示例?
    【解决方案2】:
    <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>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2012-12-09
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2020-04-02
    相关资源
    最近更新 更多