Play2.0でmoreStylesとmoreScripts

環境

  • Play framework 2.0 RC1(trunk)

Scala Templateの練習。
機能が用意されていなくてもScalaコードが書けるので簡単に実現できますね。

javaScripts.scala.html

@(scripts: Seq[String])

@scripts.map { script =>
  <script src="@routes.Assets.at(script)" type="text/javascript"></script>
}

styleSheets.scala.html

@(styleSheets: Seq[(String, String)])

@styleSheets.map { case (media, styleSheet) =>
  <link rel="stylesheet" media="@media" href="@routes.Assets.at(styleSheet)">
}

main.scala.html

@(moreStyles: Seq[(String, String)] = Nil, moreScripts: Seq[String] = Nil)(content: Html)
<!DOCTYPE html>
<html>
  <head>
    <title>sample</title>
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">

    @styleSheets(
      List(
        ("screen", "stylesheets/main.css")
      ) ++ moreStyles
    )

    @javaScripts(
      List(
        "javascripts/jquery-1.7.1.min.js"
      ) ++ moreScripts
    )
  </head>
  ...

index.scala.html

@main(
  moreScripts = List("javascripts/moreScript.js")
) {
  hello!
}

デザイナにとっては見た目がやさしくないかもしれないけど便利。