功能支持
Lite 是一个模板平台,而不仅仅是一个模板系统,我们可以在这个平台上自己设计模板语法。 在现有基础上,我们可以通过如下三种形式扩展模板语法。
- 扩展名称空间标签语法。
- 扩展名称空间属性语法。
- 扩展文本语法。
API结构
Lite 一共有9中中间代码,一个通用的结束指令,一个批量条件接口,一个静态文本添加接口,共有12个中间指令操作接口。 他们分别是:
- append(text)
用于添加静态文本。执行
- appendEL(el)
用于添加一段表达式输出(不编码)执行
- appendIf(el)
用于开始一个条件判断(结束用appendEnd())执行
- appendElse(el)
用于开始一个条件判断(结束用appendEnd())执行
- appendEnd()
通用的结束符(用于结束一个if语法,for循环,plugin等等...)
- appendFor(varName, el, status)
开始一个for循环,el表达式需要是一个符合javascript语法规则的表达式(不允许Core:for 标签中的 .. 语法)
el值类型只能有 list(Array),number(循环次数),map(Object,循环key 相当于 JavaScript的 for in 语法)执行
- appendXA(attrName, el)
添加一个XML 属性,当attrName 为空时,只做属性编码输出,不做属性语法输出(输出判断+属性名="..")。执行
- appendXT(el)
添加一个XML文本输出
- appendVar(varName, el)
申明一个模板变量
- appendCapture(varName)
捕捉一段输出,将结果申明为指定变量名
- appendPlugin(pluginClass, pluginConfig)
添加插件
- appendAll(list)
将一组中间代码,批量添加进来。
示例1
有没有为javascript多行字符串申明苦恼过?我们可以写一个模板扩展,让这个事情顺利一点。
示例2
有时候,我们需要吧一些有换行的文本显示成换行,但是,有希望代码是编码安全的。通常,这种功能只能通过内置函数实现。 现在,我们尝试用一个插件解决这个问题。
真实运用示例
该文档系统中,有个常用的模板语法扩展:代码着色语法,该语法的书写形式如:。
这个插件的实现在吗在layout.xhtml 中。片段如下。