如何整合Google Closure模板(大豆)的打印指令

时间:2013-02-11 02:16:26

标签: google-closure-library google-closure-templates

如果可以的话,我想知道如何整合Google Closure Template ,a.k.a. Soy的打印插件,主要是因为我在Java方面非常糟糕。 下面的页面解释了如何做到这一点,但我需要更多详细信息。

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

  • 将print指令简单地用作`{myprintformat $ var}'就可以了。
  • (附加问题)你认为我们可以将`goog.require('xxx')'语句编译成javascript吗?如果可以的话,我们可以提供函数并从soy.js。
  • 中获取它

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要查看Clojure源代码,了解它如何创建自己的指令。这很容易。

首先,您需要了解如何实施指令。为此,请参阅示例。下载clojure templates source code并查看:

./的java /测试/ COM /谷歌/模板/大豆/ basicdirectives / TruncateDirective.java

然后,你需要了解一点Google Guice。创建一个Guice模块来添加指令:

public class MySoyModule extends AbstractModule {

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

}

然后,使用Guice注入器实例化您的构建器,如下所示:

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");

就是这样。