如果我们只使用template-engine
,可以在playframework 2(scala)中使用scala scala
。
使用模板引擎是:
为什么不使用核心xml / html支持scala
提供的内容,如:http://www.scala-lang.org/node/131
是否有任何纯scala模板(您可以推荐)我可以在play-framework
或单独使用?
答案 0 :(得分:3)
实际上你应该向开发团队提出这个问题,但是要考虑几点:
Ok()
方法轻松返回任何字符串,因此根据您的链接,您可以执行Ok(theDate("John Doe").toString())
MVC
Web框架非常典型,其中视图是基于HTML的文件,因为......它是Web专用框架。我没有看到任何错误,有时候我正在使用其他语言/框架,并且可以看到它们之间的视图差异只是语言特定的语法,这就是目标!回答你的上一个问题,AFAIK正式有Groovy engine available作为模块,它提供Play 1.x中已知的模板引擎,但请记住,它只是人们从Play 1.x迁移的桥梁播放2.x,因为它比Play 2的原生引擎慢。
答案 1 :(得分:2)
对我来说这很合适 作为答案,至少是最后一个问题。
这只是scala。只是XML内置魔法。
http://www.alvarocarrasco.com/2011/03/play-framework-and-templating-with.html?m=1
样品:
这是一个模板:Templates.scala文件
package templates
import play.api.templates.Html
import scala.xml.Xhtml
import controllers.routes
object Main {
def page (title:String="Default title")(content: => scala.xml.Elem) = Html {
"<!DOCTYPE html>" +
Xhtml.toXhtml(
<html>
<head>
<title>{title}</title>
<link rel="stylesheet" media="screen" href={routes.Assets.at("stylesheets/main.css").toString()} />
<link rel="shortcut icon" type="image/png" href={routes.Assets.at("images/favicon.png").toString()} />
<script src={routes.Assets.at("javascripts/jquery-1.9.0.min.js").toString()} type="text/javascript" />
</head>
<body>
{content}
</body>
</html>
)
}
// a panel template, just as an example
def panel (label:String="Some label")(content: => scala.xml.Elem) = {
<div class="panel">
<div class="panel-label">{label}</div>
<div>{content}</div>
</div>
}
}
这是一个索引页 index.scala文件
package views
import templates.Main._
object IndexPage {
def apply() = {
page(title="Welcome to my Page!") {
<div>
<h1>Hello</h1>
<p>Some template markup</p>
{
panel(label="Dashboard panel")(
<div>
Panel content
</div>
)
}
</div>
}
}
}
这是一个控制器: Application.scala文件
package controllers
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(
views.IndexPage()
);
}
}