1

我希望正确考虑我的观点,以免产生太多重复。我正在使用 Play 框架,我想分解的元素是基本的常见元素——页眉、页脚、导航元素。

这种类型的保理的标准模式是什么?当我读到视图继承特性时,它们听起来好像不允许重用组件。

我正在使用 Play 2.0 版。


例如,假设我有多个页面的通用布局,并且我希望有可交换的位 - 例如,中心内容位和页脚,我正在显示的不同页面具有不同的页脚和内容组合.

4

2 回答 2

1

我能想到两件事。第一个是当您拥有页面的骨架并且您希望每个视图都填充该骨架的一个部分时,例如,这将是您的骨架:

主.html:

<!DOCTYPE HTML>
<html>
    <head>
        <title>#{get 'title' /}</title>
    </head>
    <body>
        #{doLayout /}
    </body>
</html>

这将是使用它的页面之一:

ex1.html:

#{extends 'main.html' /}
#{set title:'Your title' /}

<div>
   Your content
</div>

这样您就不必担心所有常见的“包装”代码,并且与您在该示例中设置标题的方式相同,您还可以将样式表或 javascript 链接添加到标题。

第二种方法是拥有一个包含您在单独模板中执行的片段的页面,以便您可以重复使用它们:

示例2.html:

<div id="footer">
   #{include 'Application/footer.html' /}
</div>

页脚.html:

<span>This will be rendered inside the "footer" div</span>

不确定从这样一个简单的解释是否清楚何时使用哪个,我认为一旦你得到差异是很自然的,我一直都使用。

于 2012-12-18T00:18:28.473 回答
1

您应该使用 和 的组合,layoutstags文档中所述

Layout 包装当前视图,因此它是开始和结束 HTML 结构、将脚本添加到headhTML 文档部分以及放置典型元素的最佳位置 - 例如带有徽标的稳定页眉、带有版权的页脚等。如果您有相同的主导航所有页面,您也可以将其放入布局中,然后您可以将参数添加到布局视图中,以便轻松更改活动项目的 CSS 类。请注意,例如,如果您有 2 个不同版本的主导航(例如,一个用于普通用户,第二个仅用于管理员),您可以只创建 2 个不同的布局或使用一种布局并根据某些情况显示两个不同的版本参数从初始视图传递。

Tags用于代码注入当前视图(因此它们的作用与布局正好相反)。它们是没有布局的普通视图,也是带参数的函数。它们主要用于放置在每个页面甚至请求上都在变化的东西 - 例如通知框(来自 doc: success,error等)。它们对于子导航也很有用,特别是当它在主导航的每个“分支”上发生变化时,并且有可能在某些页面上根本不应该显示它。

您也可以tagslayouts(可能反之亦然)中使用,如您所见,有很多可能性:)

注意:palako 的示例很好地说明了这一点,但它对于 Play 1.x 模板引擎来说是典型的,对于 Play 2.x,请查看参考文档和/或随 Play 源提供的示例应用程序。

于 2012-12-18T10:34:49.633 回答