使用doLayout
进行扩展时,您只能拥有一个子模板,但可以include
多个子模板。
有什么区别,最佳做法是什么?
答案 0 :(得分:6)
它们彼此相反。
doLayout
用作extends
标记的一部分。 extends标记指定您希望扩展的模板,doLayout
标记指定扩展模板中注入代码的位置。
include
标记只是指定应在指定的位置注入另一个模板。
因此,doLayout以类似的方式工作,除了doLayout标记没有指定注入哪个模板。这是由extends标签完成的,这意味着模板(通常包含页眉,页脚和常见的css和javascript)可以扩展,而不需要知道任何有关扩展它的模板的信息。
Include
,只是一个愚蠢的代码注入。
如果你想用include实现doLayout功能(这是用PHP或类似的方式实现的话),你可以做到
#{include 'header.html'}
your template code
#{include 'footer.html'}
这必须在模板中的每个页面上进行复制。使用extends
和doLayout
可以让您简单地执行
#{extends 'template.html'}
将代码注入template.html的位置由doLayout标记管理。
扩展方法只是一种更简洁的方法。此外,如果您决定更改页面布局,则只需更新一个文件,并在内容位于扩展模板中的位置提供更大的灵活性。
答案 1 :(得分:4)
从google-group我发现了extends (doLayout), include and a tag
:
扩展和包含是相似的,区别主要在于你的方式 传递变量
使用extend,父模板提供样板和子代
模板提供“身体”。例如,父模板可以呈现一个
页眉和页脚,子模板可以呈现主要内容
这页纸。您通常在子模板中设置读取的变量
并应用于父模板,例如#{set title:'Pet shop' /}
或#{set
showLoginBox:true /}
当你想在a内多次做同样的事情时,你使用include
单亲模板。例如
#{include 'formStatusFields.html' /}
父模板中的变量可用于包含的模板。
如果您有一段从多个执行的模板代码
不同的父模板,您应该使用标签。您可以将变量传递给
一个标签。例如
#{button label:'Ok', id:'ok-button'}