Documentation

You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.

§RequireJS

RequireJS のウェブサイトによると、

RequireJS は、JavaScript ファイルであり、モジュールローダーです。ブラウザでの使用に最適化されていますが、 Rhino と Node のような、他の JavaScript 環境で使用することもできます。 RequireJS のようなモジュラースクリプトローダーを使用することで、コードの速度と品質が向上します。

このことは、モジュール化された大きな JavaScript のコードベースに対して RequireJS を使うことができることを意味します。 RequireJS は Asynchronous Module Definition (同様のアイデアは CommonJS に含まれています。)と呼ばれる準標準 API を実装することによって、実現されています。 AMD を使用することで、通常は複数のファイルに分割された javascript モジュールの、クライアントサイドにおける依存性解決とロードを可能にし、サーバーサイドでの最適化を許容すると同時に、 クライアントサイド での依存性解決も可能にし、_最適化_ 、つまり本番環境に向けて依存性は最小化され、合成されます。したがって、 RequireJs は、クライアントサイドとサーバサイドの依存解決の両方をサポートします。

RequireJs サポートはデフォルトで有効になっていますので、ユーザーは public/javascripts に javascript モジュールをドロップし、好きな RequireJS のブートストラップ技術を使ってモジュールを起動すればいいのです。

§実装について知るべきこと

§

app/assets/javascripts/main.js を作る:

require(["helper/lib"],function(l) {
	var s = l.sum(4, 5);
	alert(s);
});

app/assets/javascripts/helper/lib.js を作る:

define(function() {
    return {
         sum: function(a,b) {
    		return a + b;
        }
    }
});

app/views/index.scala.html を作る:

@helper.requireJs(core = routes.Assets.at("javascripts/require.js").url, module = routes.Assets.at("javascripts/main").url)

project/Build.scala 内に以下を追加する:

val main = play.Project(appName, appVersion, appDependencies).settings(
    	requireJs += "main.js"
    )	

Dev モードでページを再レンダリングしてみましょう: alert に 9 が表示されるでしょう。

§stage, dist または start で実行する

アプリケーションの jar ファイルに (public/javascript/main.js) が含まれていなくてはなりません:

define("helper/lib",[],function(){return{sum:function(e,t){return e+t}}}),require(["helper/lib"],function(e){var t=e.sum(5,4);alert(t)}),define("main",function(){})