与您一起扩展时,doLayout
子模板只能有一个,但可以include
有多个。
有什么区别,最佳实践是什么?
它们是彼此的倒数。
doLayout
用作extends
标签的一部分。extends 标记指定您希望扩展的模板,并且该doLayout
标记指定您的代码在扩展模板中的注入位置。
该include
标记只是指定应在指定点注入另一个模板。
所以,doLayout 的工作方式与 include 类似,只是 doLayout 标签没有指定要注入的模板。这是由扩展标签完成的,这意味着模板(通常包含页眉、页脚和常见的 css 和 javascript)可以被扩展,而不需要知道任何关于扩展它的模板的信息。
Include
,只是一个愚蠢的代码注入。
如果您想使用包含来实现 doLayout 功能(这是您在 PHP 或类似的东西中执行的方式),您可以这样做
#{include 'header.html'}
your template code
#{include 'footer.html'}
这必须在模板中的每个页面上复制。而使用extends
并doLayout
允许您简单地做
#{extends 'template.html'}
您的代码注入到 template.html 的位置由 doLayout 标签管理。
extends 方法只是一种更简洁的方法。此外,如果您决定更改页面布局,您只需更新一个文件,并为您的内容在扩展模板中的位置提供更大的灵活性。
从谷歌组我注意到之间的区别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'}