当使用doLayout
扩展时,您只能有一个子模板,但您可以包含
多个。
有什么区别,最佳做法是什么?
最佳答案
它们有点互为反面。
doLayout
用作 extends
标签的一部分。 extends 标签指定您希望扩展哪个模板,doLayout
标签指定您的代码注入(inject)扩展模板的位置。
include
标签只是指定另一个模板应该在指定的点注入(inject)。
因此,doLayout 的工作方式与 include 类似,只是 doLayout 标签不指定注入(inject)哪个模板。这是由 extends 标签完成的,这意味着模板(通常包含页眉、页脚和常见的 css 和 javascript)可以被扩展,而不需要知道任何关于扩展它的模板。
Include
,只是一个愚蠢的代码注入(inject)。
如果您想使用 include 实现 doLayout 功能(这就是您在 PHP 或类似软件中的实现方式),您可以这样做
#{include 'header.html'}
your template code
#{include 'footer.html'}
这必须在模板的每个页面上复制。而使用 extends
和 doLayout
可以让你简单地做
#{extends 'template.html'}
将代码注入(inject) template.html 的位置由 doLayout 标签管理。
extends 方法只是一种更简洁的方法。此外,如果您决定更改页面布局,您只需更新一个文件,并让您更灵活地选择内容在扩展模板中的位置。
关于java - doLayout 和 include in a template in 'Java Play!' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4474544/