0

如果可以的话,我想知道如何一步一步地集成 Google Closure Template 的打印插件,也就是 Soy,主要是因为我对 Java 很不好。下面的页面解释了如何做到这一点,但我需要更详细的一个。

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

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

任何帮助表示赞赏。

4

1 回答 1

0

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

首先,您需要了解如何实施指令。为此,请参阅示例。下载clojure 模板源代码并查看:

./java/tests/com/google/template/soy/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");

而已。

于 2014-01-02T05:28:17.387 回答