我希望正确地考虑我的观点,不要产生太多的重复。我使用的是Play框架,我想要列出的元素是基本的通用元素--标题、页脚、导航元素。
这种类型的保理的标准模式是什么?当我阅读视图继承特性时,它们听起来好像不允许组件的重用。
我正在使用2.0版本的Play。
比如说,我有一个用于多个页面的公共布局,我希望有可交换的位--比如说,中央内容位和页脚,在这里,我显示的不同页面具有不同的页脚和内容组合。
发布于 2012-12-18 10:34:49
您应该使用layouts和tags的组合,如所描述的在文件中。
Layout封装当前视图,因此它是开始和结束HTML结构的最佳位置,将脚本添加到hTML文档的head部分,并放置典型元素--例如带有徽标的稳定页眉、带有版权的页脚等。如果所有页面上都有相同的主导航,也可以将其放在布局中,然后可以在布局视图中添加平面图,以便能够轻松地更改活动项的CSS类。请注意,如果在一个示例中有两个不同版本的主nav (例如,一个用于普通用户,第二个仅适用于管理员),则可以创建两个不同的布局,或者使用一个布局,并根据从初始视图传递的某个param显示两个不同的版本。
Tags用于将代码注入当前视图(因此它们的作用与布局正好相反)。它们是没有布局的公共视图,也是带有params的函数。它们主要用于在每个页面或甚至请求中放置正在更改的内容-例如,通知框(来自doc:success、error等)。此外,它们对于子导航也很有用,特别是当它在主导航的每个“分支”上发生变化时,并且有可能在某些页面上根本不应该显示。
您也可以在tags中使用layouts (反之亦然),因此正如您所看到的,有许多可能性:)
注意:palako的示例很好地说明了这一点,但是对于Play 1.x模板引擎,对于Play 2.x检查引用的文档和/或与Play源一起交付的示例应用程序,它都是典型的。
发布于 2012-12-18 00:18:28
有两件事我能想到。第一种情况是,当您有一个页面的骨架,并且希望您的每个视图填充该框架的一个部分时,例如,这将是您的骨架:
main.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链接添加到标题中。
第二种方法是有一个包含在单独模板中的片段的页面,以便您可以重用它们:
example2.html:
<div id="footer">
#{include 'Application/footer.html' /}
</div>footer.html:
<span>This will be rendered inside the "footer" div</span>不知道从这样一个简单的解释是否清楚什么时候使用哪一个,我认为一旦你得到的区别是相当自然的,我一直都使用。
https://stackoverflow.com/questions/13922123
复制相似问题