【问题标题】:Velocity: Is it better to use a Velocity Macro or #include(...) statement for a DIV block repeated many times on different pages?Velocity:对在不同页面上重复多次的 DIV 块使用 Velocity Macro 或 #include(...) 语句是否更好?
【发布时间】:2011-05-02 06:42:36
【问题描述】:

我有大约 10 个标准的动态生成 HTML 块,它们包含在我网站上大部分页面(信息侧边栏)中。

我可以使用#include 语句或将它们定义为宏,两者都可以。

什么更好?我是 Velocity 的新手,正在从 JSP 迁移一个站点。

为什么使用一个与另一个?当无参数宏()执行相同操作时,为什么要使用#include?从缓存/内存的角度来看,它们的处理方式有什么不同吗?

【问题讨论】:

    标签: java macros include velocity


    【解决方案1】:

    如果它们是静态块(其中没有 VTL 代码),那么 #include 将它们作为单独的资源肯定会执行得更好。即使它们是动态的(具有 VTL 代码),您也可以使用 #parse 而不是 #include 并且仍然可以获得比宏更好的性能。得知#define VTL 块比宏快,我什至不会感到惊讶,尽管我还没有测试过。宏很棒而且非常有用,但人们有时会误用或滥用它们。

    #parse 和#include 的缺点是您必须维护更多单独的文件,但这是获得卓越速度的代价。 #define 非常适合不需要 args 和/或需要作为引用传递的代码块,但您应该只在定义它们的模板中直接使用 #define'd 块,否则事情会变得混乱。

    宏的优点在于它们接受参数并且可以在全局范围内定义,而全局范围是它们表现最佳和最有意义的地方。当我有一个合理的选择时,我通常会尽量避免使用本地宏。当我成功地避免使用任何本地宏时,我会关闭对它们的支持以提高速度。

    【讨论】:

    • 非常感谢您的出色解释,它确实有助于澄清我心中的差异。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2011-05-23
    • 1970-01-01
    • 2013-07-18
    • 2013-09-03
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多