closure template是由google release的工具之一,最主要是為了讓html與程式邏輯分開,方
便程式的維護性,讓程式只要像call method的方式,將直塞入即可得到一個完整的html。
以下是一個簡單的範例:
soy:
{namespace examples.simple}
/**
- @param color
- @param name
*/
{template .car}
This car is {$color} color.
Its name is {$name}.
{/template}
soy檔案的定義方式,主要是定義在註解裡,再由template裡的{$color},將值塞入。
此soy定義了兩個參數,分別為name和color,作為為塞入樣板的參數。
(即使無參數傳入時,也必須保留註解。)
接著將soy檔轉成js,執行以下指令:
java -jar SoyToJsSrcCompiler.jar –outputPathFormat firstExample.js firstExample.soy
javascript的使用方式:
document.write(examples.simple.car({name:"cool car",color:"yellow"}));
要使用template之前必須先載入soyutils.js,接著載入剛剛由soy產生好的firstExample.js,
最後只要對應好template的命名,由js呼叫就可以產生html了。
java的使用方式:
import com.google.template.soy.SoyFileSet;
import com.google.template.soy.data.SoyMapData;
import com.google.template.soy.tofu.SoyTofu;
import java.io.File;
public class FirstExample {
public static void main (String[] args) {
SoyFileSet sfs = (new SoyFileSet.Builder()).add(new File("firstExample.soy")).build();
SoyTofu tofu = sfs.compileToJavaObj();
System.out.println(tofu.render("examples.simple.car", new SoyMapData("name","cool car","color","yellow"), null));
}
}
以上做法主要是讀取soy檔(與js做法不同),接著將檔案轉成java的object,最後塞入參數即可產生html。