layui模板源码是什么
layui 的模板能力来自内置的 laytpl 引擎。所谓“模板源码”,通常指两处:一是 laytpl.js 这个解析器本身,二是后台模板中那些 .html 片段,比如 layuiadmin 风格项目里的 views 目录。
理解它的关键:模板源码不负责数据,只负责把数据放到正确的位置。
模板目录的常见结构
以典型后台模板为例:
views/:页面片段,按模块分文件夹modules/:layui 组件源码,含laytpl.jsconfig.js:模块别名与加载配置index.html:入口骨架
改页面时优先动 views,别急着改 laytpl.js。后者是公共依赖,改动会影响所有模板。
laytpl 的三种核心语法
输出变量
{{ d.title }}
d 是传入的数据对象。注意是 d. 开头,不是直接写变量名。
条件判断
{{# if(d.status === 1){ }}
已发布
{{# } }}
循环
{{# layui.each(d.list, function(i, item){ }}
{{# }); }}
循环里用 item 访问当前项,别再用 d。
模板怎么渲染出来
常见两种调用方式:
laytpl(tpl).render(data, function(html){ ... }),手动控制插入位置- 组件内部自动渲染,比如
table的templet属性,直接写模板字符串或函数
调试时先确认数据是否为空。模板报错多数不是语法问题,而是数据字段对不上。
二次开发该改哪里
想改页面样式,改对应 views 下的 HTML 和 CSS。
想改数据渲染逻辑,改页面里的 laytpl 调用或 templet 函数。
想扩展模板能力,才考虑动 laytpl.js,但更推荐在业务层写辅助函数。
一个实用习惯:给模板加注释,标明数据来源接口。半年后回来改,能省不少时间。
常见坑
- 模板里写了
{{ d.name }},但数据里是username,直接空白 layui.each里嵌套循环,变量名重复导致取错值- 模板字符串用反引号,内部又用了反引号,提前闭合
小结
layui 模板源码的核心是 laytpl 的“数据 + 模板”模式。先分清哪些是公共组件、哪些是业务页面,再按需修改,比盲目通读源码高效得多。

