5

与您一起扩展时,doLayout子模板只能有一个,但可以include有多个。

有什么区别,最佳实践是什么?

4

2 回答 2

6

它们是彼此的倒数。

doLayout用作extends标签的一部分。extends 标记指定您希望扩展的模板,并且该doLayout标记指定您的代码在扩展模板中的注入位置。

include标记只是指定应在指定点注入另一个模板。

所以,doLayout 的工作方式与 include 类似,只是 doLayout 标签没有指定要注入的模板。这是由扩展标签完成的,这意味着模板(通常包含页眉、页脚和常见的 css 和 javascript)可以被扩展,而不需要知道任何关于扩展它的模板的信息。

Include,只是一个愚蠢的代码注入。

如果您想使用包含来实现 doLayout 功能(这是您在 PHP 或类似的东西中执行的方式),您可以这样做

#{include 'header.html'}
your template code
#{include 'footer.html'}

这必须在模板中的每个页面上复制。而使用extendsdoLayout允许您简单地做

#{extends 'template.html'}

您的代码注入到 template.html 的位置由 doLayout 标签管理。

extends 方法只是一种更简洁的方法。此外,如果您决定更改页面布局,您只需更新一个文件,并为您的内容在扩展模板中的位置提供更大的灵活性。

于 2010-12-18T10:20:36.283 回答
4

谷歌组我注意到之间的区别extends (doLayout), include and a tag

extend 和 include 类似,区别主要在于传递变量的方式

使用extend,父模板提供样板,子模板提供“正文”。例如,父模板可以呈现页眉和页脚,子模板可以呈现页面的主要内容。您通常在子模板中设置变量,这些变量在父模板中读取和应用,例如#{set title:'Pet shop' /}#{set showLoginBox:true /}

当您想在单个父模板中多次执行相同的操作时,您可以使用 include。例如 #{include 'formStatusFields.html' /} 父模板中的变量对包含的模板可用。

如果你有一段模板代码是从多个不同的父模板执行的,你应该使用一个标签。您可以将变量传递给标签。例如 #{button label:'Ok', id:'ok-button'}

于 2010-12-19T09:04:02.920 回答