介绍template
模板引擎是为了使用户界面与业务数据(内容)分离而产生的, 其本身并不是一种深奥的技术.
template模板引擎首先会将合法的模板编译为lua函数, 然后将模板文件和数据通过模板引擎生成一份HTML代码.
cf的admin库整使使用了template来构建服务端渲染页面, 并利用单页面+iframe模式快速完成lua后台开发.
1. template基础语法
在真正使用之前, 我们先来学习一下template常见的一些基本语法:
-
{ { lua expression }}
-lua expression
是一段lua表达式; 作用为输出表达式的结果, 一些特殊符号将会被转义; -
{* lua expression *}
-lua expression
是一段lua表达式; 作用为输出表达式的结果, 不会转义任何符号; -
{% lua code %}
- 执行一段lua代码, 如:{% for i = x, y do %} ... {% end %}
; -
{# comments #}
- comments仅作为注释, 不会包含在输出字符串内. 这段语法的作用类似lua内的--
与--[[]]
; -
{(template)}
- 导入其它模板文件; 同时支持传参:{(file.html, { message = "Hello, World" })}
;
2. 转义字符
&
将会转义为&
<
将会转义为<
>
将会转义为>
"
将会转义为"
'
将会转义为'
/
将会转义为/
3. API
-
template.compile(html)
参数html为字符串类型, 可以是:模板文件路径、
此方法返回一个渲染函数, 调用这个函数并传入一个table(key-value)作为参数则可以在模板文件内直接引用.
-
template.precompile(view, path, strip)
此方法用来将view预编译为lua的二进制代码块, strip是一个bool类型用来确定是否包含调试信息.
-
template.load(path)
此方法用来重写template内部的加载行为; 默认的模板加载流程为: 检查缓存 -> 读取文件 -> 解析文件 -> 渲染 -> 输出;
path字段为需要加载的文件路径或模板、html代码;
-
template.print(html)
此方法用来重写template内部渲染后的输出行为; 默认的输出行为: print
-
template.caching(Enable)
此方法