有没有办法在一个不在网站上的 .lua 文件中运行一个位于网站上的 .lua 文件?

我正在寻找一种创建某种“加载器”的方法。我想知道是否有一种在网站上创建 .lua 文件的方法,其中包含例如:

file_1.lua -- on webserver

local function print_hello()
    print("hello!")
end

并且有一个不在网站上的单独的 .lua 文件,它可以访问、返回和运行 file_1.lua 的内容,就好像它是原来的 file_1.lua 文件一样。

file_2.lua -- not on webserver

hello!

任何帮助都将不胜感激!如果这个问题不清楚的话,我会尽可能清楚。

提前感谢!

点赞
用户11740758
用户11740758

要通过 HTTP 获取 Lua 文件的源代码,您必须以某种方式扩展 Lua。

在 Linux 上,使用能够将 Linux 命令输出存储在 Lua 变量中的函数扩展 Lua 相对简单...

local cmd=function(shell)
return io.popen(shell, 'r'):read('a+')
end

然后,在 Linux Shell 上,找到一个输出从 Web 服务器提供的文件内容的命令。

我发现wget;-)...

wget -q -O- localhost/file_1.lua

我的建议是调整 file_1.lua 以便于...

--[[
This file defining function(s) and return all in a table
]]

local function print_hello()
    print("hello!")
end

return {print_hello=print_hello}

然后,加载程序很简单...

package.preload.weblua=load(cmd('wget -q -O- localhost/file_1.lua'),'Hello Example')

现在可以使用 require() ...

weblua=require('weblua')

... 进行尝试,试一下...

weblua.print_hello()

如果 file_1.lua 在一个非常长的脚本运行期间被更改/扩展,则可以直接调用加载程序。

它还将在该表中返回一个单个函数。

使用...

package.preload.weblua().print_hello()
2021-08-15 15:11:16