StringTemplate

StringTemplate

StringTemplate(簡稱ST)是一個基於Java的模板引擎庫(目前同時支持C#、Python、Ruby),可以用於生成源代碼、Web頁面、電子郵件等各種有格式的文本。StringTemplate不同於其他類似的模板引擎的顯著特點是嚴格執行模型視圖分離,尤其擅長多目標代碼生成、多種網站風格管理以及網站多語言版本生成等。StringTemplate已經應用到許多大型網站中,例如jGuru.com。

特點


使用StringTemplate可以嚴格保證業務邏輯和表現邏輯相分離,不會互相干擾,提高網站的開發和維護的效率。模型和視圖分離所帶來的優點包括:模板文件可以在相似的網站開發中重用,清晰的模板文件可以作為網站開發的說明文檔,模板文件可以單獨修改。

基本語法


StringTemplate支持兩種分隔符<...>和$...$
語法描述例子
< attribute>顯示變數值或空串
$user$
< attribute. property>顯示集合或對象的屬性值或空串
$user.name$
< attribute.( expr)>與< attribute. property> 意義相同,但是如果expr是保留字,則必須使用< attribute.( expr)>
$user.(name_label)$
< multi-valued-attribute>集合中多個屬性連接在一起的值
$users$
< multi-valued-attribute; separator= expr>多個屬性連接在一起,屬性之間使用expr分隔
$users; separator=", "$
< template( argument-list)>調用其它模板,可以向該模板傳遞參數
$bold()$
< attribute: template( argument-list)>模板應用
$name:bold()$
< attribute:{ argument-name_ | _anonymous-template}>應用匿名模板
$users:{s|
  • $s$
  • }; separator="\n"$
    $s$}; separator="\n">
    subtemplate條件語句
    $if(users)$ $users:{u|$u$}$ $endif$
    }>
    \$ or \<語法分隔符的轉義表達
    \$
    \<
    <\ >, <\n>, <\t>, <\r>轉義字元
    $\n$
    <\n>
    , $! comment !$註釋符號
    $! this is a comment !$