Closure Template

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定義了兩個參數,分別為namecolor,作為為塞入樣板的參數。

(即使無參數傳入時,也必須保留註解。)

 
接著將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做法不同),接著將檔案轉成javaobject,最後塞入參數即可產生html

closure template還有很多command可以使用,例如ifforswitch等…,詳情請參考此link