前置知识: Lua

模块加载

00:00
1 min Advanced 2026/6/14

Lua模块加载详解:require搜索路径、自定义加载器。

1. require 机制

local json = require("cjson")

搜索顺序:

  1. package.loaded 缓存
  2. package.preload 预加载
  3. package.searchers 搜索

2. 搜索路径

-- 查看当前路径
print(package.path)   -- Lua 文件搜索路径
print(package.cpath)  -- C 库搜索路径

-- 修改搜索路径
package.path = package.path .. ";./?.lua;./lib/?.lua"

路径模板:

  • ? 替换模块
  • /usr/local/share/lua/5.4/?.lua
  • /usr/local/lib/lua/5.4/?.so

3. 自定义加载器

table.insert(package.searchers, function(name)
    if name == "virtual" then
        return function()
            return { hello = function() print("virtual module") end }
        end
    end
end)

local v = require("virtual")
v.hello()  -- "virtual module"

4. 模块编写

-- mymodule.lua
local M = {}

function M.greet(name)
    return "Hello, " .. name
end

return M

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式