全局 Lua 模块
在用 Edgelang 编写自定义的 Edge 规则时,有时会需要调用自定义的 Lua 模块,此时可以通过在 全局 Lua 模块 中增加此 Lua 模块。
1. 创建全局 Lua 模块
下面我们看下如何创建一个全局 Lua 模块,并在 Edgelang 中引用它。
首先点击 全局配置:

然后点击左侧导航栏的 全局 Lua 模块 进入全局 Lua 模块页面。

在这个页面中,会列出已经存在的全局 Lua 模块,点击 新建 Lua 模块 按钮创建一个新模块。

弹出的 新建 Lua 模块 对话框中提供以下配置项:
- 模块名称:填写模块名称,即后续在 Edgelang 中引用时使用的名称。
- 上传 Lua 文件:点击
选择文件直接导入已有的.lua文件,模块名称默认使用文件名。 - Lua 代码:在编辑框中直接编写 Lua 代码,支持开启
Vim 模式进行编辑。 - 启动时运行:开启后,Edge Node 启动时会在每个 worker 进程初始化时调用该模块的
init_worker()函数。注意:启用后,修改该 Lua 模块配置将触发 Edge Node 的优雅重启。此选项于26.6.1-1版本首次引入。

例如,编写一个简单的返回问候语的模块:
local _M = {}
function _M.say_hello()
return "hello world!"
end
return _M
填写完毕后点击 保存 按钮进行保存,Lua 模块会自动下发到每个节点,之后即可在 Edgelang 代码中引用:

true =>
say(foreign-call(module: "custom_lua_module", func: "say_hello"));
2. 同步选项
页面右上方是 同步选项,含义同 全局配置

有点区别的是,当取消选中 Automatic Synchronization 后,全局 Lua 模块除了支持复制所有 Lua 模块到指定分区外,还支持单独复制某一个 Lua 模块到指定分区,让我们点击复制按钮。

然后选择要同步的分区,点击 copy,当前分区的配置就会覆盖指定分区的配置。

3. 修改历史
可以在发布页面查看同一个分区下 Lua 模块的修改历史。让我们点击 发布 按钮

找到对应的发布历史,点击 查看详情

就能看到此次的修改内容
