Play 2.0 中文资料 - 模板引擎(用例)

模板, 实际作为简单函数存在的, 它可以任何你希望的方式被组合应用. 下面是一些通用场景的使用案例.

布局

我们来声明一个 views/main.scala.html 模板来用作主布局模板:

正如你所看到的, 这个模板有两个参数: 一个标题和一个 HTML 内容块. 现在我们可在另一个模板 views/Application/index.scala.html 中用它:

注: 我们有时候使用命名参数(像 @main(title = "Home"), 而不是像 @main("Home") 那样来使用. 这由你而定, 只要选择在特定上下文中你认为表达清晰的即可.

有时你需要第二个页面特定的内容块作为侧边栏(sidebar) 或面包屑导航(breadcrumb trail). 你可以附加一个参数来做到:

在我们的 ‘index’ 模板中应用它, 是这样:

另一种做法是, 我们能单独声明 sidebar 块:

标签 (它们就是函数, 对吗?)

我们来写一个用来显示 HTML 通知的简单的标签 views/tags/notice.scala.html:

Unmi 注: body 是一个 (String)=> Html 类型的函数参数, Level 的默认值为  "error"

然后现在从另一个模板中使用它:

包含

再一次(Unmi 注: 像标签那样就是个函数), 这儿也没什么特殊的. 你可以调用其他任何你喜欢的模板 (实际上任何的函数是有其来源的):

moreScripts 和 moreStyles 等价物

欲在 Scala 模板中定义一个等价于老式的 moreScripts 或 moreStyles 变量 (像在 Play! 1.x 中的那样), 你可像下面那样在主模板中定义一个变量 :

Unmi 注: 在 Play! 1.x 中像下面那样写就能引入相应目录下的 js 或  css 文件:

上面标签会各自用 <script> 和 <link> 去引入 /public/javascrips/jquery.js 和  /public/stylesheets/main.css 文件。

然后在继承模板中就需要一个额外的脚本参数 :

如果是在继承模板中不需要额外的脚本参数(Unmi 注: 因为声明 main 时,scripts 参数是带默认值的 Html("")), 就这样 :

本文链接 https://yanbin.blog/play2-0-tutorials-cn-template-engine-common-use-cases/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments