2013-02-11 24 views
0

我想知道如何集成谷歌關閉模板的打印插件,又名大豆,如果可以的話,主要是因爲我很糟糕在Java。 下面的頁面解釋瞭如何做到這一點,但我需要更多的細節。如何整合谷歌關閉模板(大豆)的打印指令

https://developers.google.com/closure/templates/docs/plugins

  • 這是所有罰款打印指令簡單地用作`{myprintformat是$ var}」。
  • (附加問題)你認爲我們可以將`goog.require('xxx')'語句編譯成javascript嗎?如果可以的話,我們可以提供功能並從soy.js中獲取。

任何幫助表示讚賞。

回答

0

你需要看看Clojure源代碼,看看它是如何創建自己的指令。這很容易。

首先,您需要了解如何實施指令。要做到這一點,請看一個例​​子。下載clojure templates source code和考慮:

./java/tests/com/google/template/soy/basicdirectives/TruncateDirective.java

然後,你需要了解的Google Guice豆蔻位。創建一個吉斯模塊來增加您的指令:

public class MySoyModule extends AbstractModule { 

    @Override 
    protected void configure() {   
     Multibinder<SoyPrintDirective> soyDirectivesSetBinder = Multibinder.newSetBinder(binder(), SoyPrintDirective.class);   
     soyDirectivesSetBinder.addBinding().to(DateDirective.class); 
    } 

} 

然後,實例化你的建設者,使用吉斯注射器,像這樣:

Injector injector = Guice.createInjector(new SoyModule(), new MySoyModule()); 
SoyFileSet.Builder sfsBuilder = injector.getInstance(SoyFileSet.Builder.class); 
SoyFileSet sfs = sfsBuilder.add(SoyUtils.class.getResource(source)).build(); 

現在你可以調用您的模板:

SoyTofu simpleTofu = sfs.compileToTofu().forNamespace("soy.examples.simple"); 

就是這樣。

+0

謝謝feroult,這是非常友好的描述給我,我稍後再試。謝謝! – 2014-01-24 06:35:50