我是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