StringTemplate
定义StringTemplate(简称ST)是一个基于Java的模板引擎库(目前同时支持C#、Python、Ruby),可以用于生成源代码、Web页面、电子邮件等各种有格式的文本。StringTemplate不同于其他类似的模板引擎的显著特点是严格执行模型视图分离,尤其擅长多目标代码生成、多种网站风格管理以及网站多语言版本生成等。StringTemplate已经应用到许多大型网站中,例如jGuru.com。
特点使用StringTemplate可以严格保证业务逻辑和表现逻辑相分离,不会互相干扰,提高网站的开发和维护的效率。模型和视图分离所带来的优点包括:模板文件可以在相似的网站开发中重用,清晰的模板文件可以做为网站开发的说明文档,模板文件可以单独修改。
基本语法StringTemplate支持两种分隔符<...>和$...$语法
描述
例子
<attribute>
显示变量值或空串
$user$
<user>
<attribute.property>
显示集合或对象的属性值或空串
$user.name$
<user.name>
<attribute.(expr)>
与<attribute.property> 意义相同,但是如果expr是保留字,则必须使用<attribute.(expr)>
$user.(name_label)$
<user.(name_label)>
<multi-valued-attribute>
集合中多个属性连接在一起的值
$users$
<users>
<multi-valued-attribute; separator=expr>
多个属性连接在一起,属性之间使用expr分隔
$users; separator=", "$
<users; separator=", ">
<template(argument-list)>
调用其它模板,可以向该模板传递参数
$bold()$
<bold(item=title)>
<attribute:template(argument-list)>
模板应用
$name:bold()$
<name:checkoutReceipt(items=skus, ship=shipOpt)>
<attribute:{argument-name_ | _anonymous-template}>
应用匿名模板
$users:{s|<li>$s$</li>}; separator="
"$
<users:{s|<li>$s$</li>}; separator="
">
<if(!attribute)>subtemplate<endif>
条件语句
$if(users)$ $users:{u|$u$}$ $endif$
<if(users)> <users:{u|<u>}> <endif>
$ or <
语法分隔符的转义表达
$
<
< >, <
>, <>, <
>
转义字符
$
$
<
>
<! comment !>, $! comment !$
注释符号
$! this is a comment !$
<! this is a comment !>