◆ 模块的含义和使用:
模块就是一个函数集合,通常表现为一个Lua 表,里面有模块作者提供的各种功能函数,使用点号“.”即可访问。使用require 函数可以加载模块,参数是模块所在的文件名(省略后缀),通常我们需要用变量来保存require函数的返回结果。
local cjson = require ” cjson " --加载OpenResty的cjson 模块,local化
local str = cjson.encode ({a=1,b=2}) --调用模块里的函数, JSON 编码
◆ 编写模块:
编写自己的Lua 模块也很容易,在源码文件里创建一个表,把函数作为表的元素,最后用return 返回这个表就可以了。
local proto={ -- 定义一个衰,包含模块的所有功能
version = '0.1' -- 给一个基本的版本号信息
}
local data = 0 -- 模块的内部数据,不暴露给外界
function proto. run () -- 定义一个函数,注意不能是local
print ( "run in mod ")
end
return proto --返回模块的表
require 在加载模块的同时会执行文件里的代码(仅执行一次,所以多次require 不会影响效率〉,在形式上, require 的工作相当于:
local _tmp = function() -- 定义一个临时函数
... -- 里面是模块文件里的所有源码
end
local xxx = _tmp() -- 执行临时函数,最后会返回模块的表