阿帕奇速度"main template"?



我是Apache Velocity的新手,在找出构建模板的最佳方式时遇到了一些困难。在我看到的大多数指南中,页面都是这样构建的:

#parse("header.vm")
<body>
    ...
</body>
#parse("footer.vm")

我还看到有人用这种方法接近"主"模板:

<head>
    ...
</head>
<body>
#if($activeTab=="home")
    #parse("home.vm")
#elseif($activeTab=="aboutus")
    #parse("aboutus.vm")
...and so on.
</body>

这看起来有点傻,但我想它是有效的。

我用了很多Twirl,所以我可能会被宠坏,但我想把一个模板注入另一个模板,基本上以这样的主模板结束:

<head>
    ...
</head>
<body>
    $content
</body>

然后将其他模板写成:

#parse(main){ 
    TEMPLATE CONTENT 
}

这在Velocity中可能吗?如果是,这是不是不好的做法?如果是,为什么?谢谢

Velocity本身并不能很好地支持布局模板(您所称的主模板)。然而,它们提供了一种称为Velocity布局Servlet(VLS)的工具。

为了提醒您,其他一些模板解决方案(如Rythm)通过模板继承机制(demo)提供了非常好的模板布局管理。免责声明:我是Rythm的作者,所以我在这里可能有一些偏见。但是,您可以查看由第三方创建的这篇文章,了解不同模板解决方案的优缺点。

您可以使用$!bodyContent变量。

mainLayout.vm:

#macro(mainLayout)
<head>
    ...
</head>
<body>
    $!bodyContent
</body>
#end

index.vm:

#@mainLayout()
  <h1>Index page</h1>
#end

最新更新