§CoffeeScript を使う
CoffeeScript は、小さくかつエレガントな言語で、JavaScript へコンパイルされます。CoffeeScript を利用すると、JavaScript コードをより良い構文で書くことができます。
Play では、CoffeeScript など、別の言語へコンパイルされるようなアセットは全て app/assets
へ入れることになっています。ここへ入れられたファイルはビルドの中で自動的にコンパイルされます。CoffeeScript の場合は、このとき普通の JavaScript へコンパイルされます。生成された JavaScript ファイルは public/
ディレクトリに配置されたかのように扱われるため、一旦コンパイルされてしまえば通常の JavaScript ファイルと違いはありません。
補足:生成された JavaScript ファイルなどの Play が管理しているリソース自体は
public/
ディレクトリへ直接コピーされるのではなく、target/scala-2.x.x/resources_managed
という別のディレクトリに保持されます。
例えば、 app/assets/javascripts/main.coffee
は public/javascripts/main.js
において通常の JavaScript リソースとして利用できるようになります。
CoffeeScript ソースファイルは compile
コマンドの実行時や、開発モードでアプリケーションを起動中にブラウザでページが再読み込みされた際に自動的にコンパイルされます。後者のタイミングでコンパイルされた場合、コンパイルエラーはブラウザ上に表示されます。
§ディレクトリ構造
CoffeeScript を使うプロジェクトの基本的なデイレクトリ構造は次のようになります。
app
└ assets
└ javascripts
└ main.coffee
二つの JavaScript ファイル: public/javascripts/main.js
と public/javascripts/main.min.js
がコンパイルされます。ひとつ目のファイルは開発時に便利な読めるコードで、二つ目は本番環境で利用できる圧縮ファイルです。いずれもテンプレートにて使用することができます:
<script src="@routes.Assets.at("javascripts/main.js")">
<script src="@routes.Assets.at("javascripts/main.min.js")">
§オプション
CoffeeScript のコンパイルは (PlayProject
の設定部分である) Build.scala
ファイルで制御することができます。現在サポートされている唯一のオプションは bare モードです。
coffeescriptOptions := Seq("bare")
ネイティブの CoffeeScript コンパイルを使う実験的なオプションがあることを覚えておいてください。この方法の利点は速さであり、欠点は外部への依存です。この方法を試したい場合は、設定に以下を追加してください:
coffeescriptOptions := Seq("native", "/usr/local/bin/coffee -p")
グローバルスコープの汚染を防ぐため、 JavaScript コードはデフォルトでトップレベルの安全な関数ラッパ内に生成されます。 bare
オプションはこの関数ラッパを取り除きます。
次: LESS CSS を使う