必须调用 layui.config() 重设路径,且需在 layui.js 加载后、lay.use() 前执行;layui.cache.dir 是只读快照,手动修改无效,不触发路径更新。

不能直接改 layui.cache.dir,它只读且不生效——动态重设 Layui 核心路径的唯一合法方式是调用 layui.config(),且必须在 layui.js 加载后、任何 lay.use() 之前执行。
为什么改 layui.cache.dir 没用
这个属性是 Layui 初始化时从 layui.config() 的 dir(或旧版 base)参数自动推导出的只读快照,不是配置入口。手动赋值如 layui.cache.dir = '/new/path/' 不会触发模块加载逻辑更新,后续 lay.use('layer') 仍按原始路径找文件,大概率报 404 或 module not found。
- 常见错误现象:
layui.cache.dir控制台打印确实变了,但lay.use(['form'])仍去旧目录加载 JS,浏览器 Network 显示 404 - 本质原因:Layui 模块加载器只信任
layui.config()的初始配置,cache对象仅用于内部缓存和调试,不参与运行时路径解析 - 低版本(2.5.x 前)甚至会忽略对
cache.dir的写操作,赋值后console.log都显示原值
layui.config() 的正确调用时机与参数
必须确保三件事:脚本顺序正确、参数名准确、不重复调用。
- 顺序铁律:
<script src="layui.js"></script>→<script>layui.config({...})</script>→<script>lay.use(...)</script>。提前或延后都会导致layui is not defined或配置被忽略 - 参数名注意:新版(2.8+)用
dir,旧版(2.7-)用base;二者不可混用,且都必须以/结尾(如dir: '/static/layui/'),否则模块路径拼接错位 - 禁止多次调用:
layui.config()只应执行一次,第二次调用会覆盖前一次,且部分环境可能直接报错或静默失败 - CDN 场景示例:
layui.config({ dir: 'https://cdn.staticfile.org/layui/2.11.0/', version: true });——version: true自动加时间戳防缓存,适合上线环境
动态切换路径的实用限制
所谓“动态”仅指页面初始化阶段的路径设定,不是运行时热切换。一旦 lay.use() 开始加载模块,路径就已固化。
- 无法在
lay.use()之后再调用layui.config()来切换已加载模块的路径——比如先加载了layer,再改dir,新lay.use('upload')会按新路径找,但已加载的layer实例不受影响,也不会重新加载 - 如果真需运行时换源(如灰度发布),只能提前预加载两套模块,用不同
dir配置分两次初始化两个独立layui实例(极少见,且需隔离作用域) - 路径协议必须统一:若
dir是https://,所有extend映射的模块也得用https://,混用http会导致浏览器主动拦截混合内容
真正要改核心路径,别碰 cache,老老实实把 layui.config() 放对位置、用对参数——这是 Layui 模块系统的唯一阀门,绕不开,也糊弄不了。


















