Hatena::ブログ(Diary)

すにぺっと

2011-05-30

play-scalaを改めて学ぶ-15 Scala templates その1

| 00:41 | play-scalaを改めて学ぶ-15 Scala templates その1を含むブックマーク

先日play scalaの0.9.1が出た。

これはplayの1.2.2以降で使えるようだが、(多分)

まだ1.2.2がRCみたいなので、実際に使うのはもうちょっと待つ。


play scala 0.9.1ではけっこう機能が追加されており、

というのが大きな変更らしい。

コンパイラがSBTベースになったほうは具体的に

どういう変化があるのかよくわからないが、

注目はScalaネイティブテンプレートエンジン。

これは

http://scala.playframework.org/documentation/scala-0.9.1/templates

にも解説がでている。

1.2.2の正式版がでるまで、ここを見て予習しておこう。


Scala templates

play Scalaは、とてもパワフルな新しいScalaベースのテンプレートエンジンが付属している。

この新しいテンプレートエンジンの設計は、特にASP.NET Razorという

ライブラリに影響を受けているらしい。

このへんに解説がある。


そして、Rezorの特に以下の点を意識しているらしい。

コンパクト、表現的、流動的

ファイルに必要な文字やキーストロークの数を最小化し、高速で流動的な

コーディング・ワークフローを可能に。

多くのテンプレートの文法とは違い、HTML内で明示的にサーバ・ブロックを

示すためのコーディングが必要ない。

パーサーはこれをコードから推測できるようになってるので、

非常にコンパクトで表現的な文法が可能になり、クリーンで、素早くタイプ可能。


簡単に習得

簡単に習得できるので、最小限の概念で素早く実用的。

使用するのはすべて既存の言語やHTMLスキルである。


新しい言語ではない

我々は意識的に新しい命令言語を作成しないようにした。

その代わり、開発者がScalaを使用できるようにし、素晴らしい

HTML構築のワークフローを可能にする

テンプレート・タグの文法を提供するようにした。


テキスト・エディタでの作業

特別なツールは必要なく、プレーンで昔ながらの

テキスト・エディタでも作成可能。


ではscala templatesのOverviewから。


Overview

playScalaのテンプレートは、Scalaのコードの小さなブロックを含む

単純なテキストファイル。

これは、(HTMLXMLCSV等)は任意のテキストベースの

フォーマットを生成することが可能。

そのため、HTML形式なので、Webデザイナーでも安心の動作設計。


これらはシンプルな命名規則に従って、標準のScala関数としてコンパイルされる。

/Application/index.scala.htmlテンプレートファイルを作った場合
views.Application.html.index関数が生成される。

サンプル:

@(customer:models.Customer, orders:Seq[models.Order])
 
<h1>Welcome @customer.name!</h1>
 
@if(orders) {
     
    <h2>Here is a list of your current orders:</h2>
     
    <ul>
    @orders.map { order =>
        <li>@order.title</li>
    }
    </ul>
     
} else {
     
    <h2>You don't have any order yet...</h2>
     
}

たしかに、以前は見なかった記法の箇所がいっぱいある。

頭に@ついてるところが多いな。

んで、Scalaから呼び出す場合は、こう。

val page:play.template.Html = views.Application.html.index(
    customer, orders
)

いままでよりもシンプルに書けるかなぁ。

次回もscala templatesの続きをみていこう。


プログラミングScala
プログラミングScala
posted with amazlet at 11.05.31
Dean Wampler Alex Payne
オライリージャパン
売り上げランキング: 44915