Scalaでテンプレートエンジンを使ってjsファイルを作成したい。Scala の一般的なテンプレート エンジン、つまり Play と Scalate でそれは可能ですか? 可能であれば、それらのいずれかを使用することの長所と短所は何ですか?
2 に答える
.js
ext、すなわち:app/views/myScript.scala.js
とダミーコンテンツでビューを作成するだけです:
@(message: String)
alert("@message");
次に、コントローラーにアクションを追加します。
def myScript = Action {
// use views.js... NOT views.html... !
Ok(views.js.myScript.render("Whoha! I'm dynamic JS in Scala :)"))
}
またはJavaバージョン:
public Result myScript(){
// use views.js... NOT views.html... !
return ok(views.js.myScript.render("Yey! I'm dynamic JS in Java :)"));
}
このアクションにルートを追加します。
GET /my-script controllers.Application.myScript()
したがって、このルートを直接使用できます。
<script src="/my-script"></script>
Play はContent-Type:text/javascript; charset=utf-8
応答で有効を返す必要があることに注意してください。使用しているバージョンによっては、アクション内でこれを手動で強制する必要がある場合があります (ブラウザーの検査ツールを使用して、応答の種類を確認してください)。
何を達成したいか、つまり JavaScript コードがどれだけ洗練されているかによって異なりますが、本当に小さく単純なものでない限り、Scala.jsを使用することをお勧めします。このようにして、基本的に JavaScript にコンパイルされる Scala コードを書き、そのコンパイルされた JavaScript を Play アプリケーションに含めることができます。
Scala と JavaScript を書くことの利点は明らかです (型の安全性、既存の Scala ライブラリの多くを使用)。欠点は、Scala -> JavaScript コンパイルの遅延と、Play が独自のテンプレート エンジンを使用しているような Scala.js と Play のシームレスな統合の欠如です。これら 2 つを連携させるための余分な作業に見合う価値があるかどうかを判断するのは、あなた次第です。