扩展Velocity语法时,最佳做法是什么。可用的两种机制是指令和宏。两者看起来同样强大。指令需要实际开发Java代码,而宏只是Velocity语法的片段。
Directives的优点在于,因为它们是用Java编写的,所以您不必解析宏中包含的额外Velocity语法。它使得Velocity的扩展更加正式,并且阻止了大量不受控制的添加。
对于Macros来说,我认为这非常灵活,并且在应用程序开发过程中会发现许多重用,因为它们会被发现。
所以,你最喜欢这个领域的想法。
答案 0 :(得分:2)
实际上还有第三种方式。但首先......
指令用于对模板的某个部分进行操作或对模板的某个部分进行操作,或者需要了解模板周围的模板。例如,您可以创建一个指令,以某种方式转换它所包含的部分的输出。并且它们以全局,永远在线的方式提供这种功能性的,以模板为中心的行为。
宏并非设计为功能。它们最适合用于重复内容或标记。它们可以防止您在Java代码中输出任何标记语言(或诸如此类),或者反复重复VTL的各个部分。
第三种方式称为“工具”。 VelocityTools项目中有许多可以作为示例使用或使用,更不用说支持代码以实现非常简单的工具管理。无论如何,工具主要用于访问或操作您的数据。不要创建执行数字格式的指令或宏。使用工具。工具为库和API提供了一个VTL友好的界面,否则这些界面很难在模板中使用。它们可以以指令和宏永远不可能的方式进行访问控制和范围限定。
对于不同的事情,这三个都非常有用。简而言之: