女士们先生们。
我正在阅读Google 的 Closure Templates 文档。
那里没有那么多代码,但它代表了我难以理解的内容(特别是在 Java 中)。我将逐行进行:
// Bundle the Soy files for your project into a SoyFileSet.
SoyFileSet sfs = new SoyFileSet.Builder().add(new File("simple.soy")).build();
我明白了。收集多个模板文件的对象。美好的。但为什么.Builder()
?为什么不只是new SoyFileSet().add(...).build()
?
// Compile the template into a SoyTofu object.
// SoyTofu's newRenderer method returns an object that can render any template in file set.
SoyTofu tofu = sfs.compileToJavaObj();
美好的。但我为什么要这个?收集完文件后,我期待的只是sfs.render(Map<> data)
. 为什么我需要将其编译为 Java 对象?
最后...
// Call the template with no data.
System.out.println(tofu.newRenderer("examples.simple.helloWorld").render());
太好了,为什么我必须创建一个中间对象才能调用它的方法?为什么sfs
对象不能有.render()
方法?为什么我需要一个Renderer
对象?
Java 令人沮丧,为什么事情不以直截了当的方式完成?