私はそれを理解し、それほど難しくはありませんが、いくつかの落とし穴があります.
基本的に、いくつかのモードのいずれかで、依存関係生成スクリプト calcdeps.py ( calcdeps.py docs を読む必要があります) を使用できます。
- deps.js ファイルの生成
- すべてを 1 つのファイルに連結し、必要に応じてクロージャ コンパイラを使用してコンパイルします。
依存関係ツリーに変更を加えない限り、JS ソースの編集後に calcdeps.py を実行しないようにするため、開発には (1) を使用する必要があります。残りの答えはこの方法についてです。他の方法はまだ試していません。
これを生成するために私がしたことは次のとおりです。
#!/bin/bash
cd closure-library/closure/goog
python ../bin/calcdeps.py -p ../../../js -o deps > ../../../my-deps.js
...次のディレクトリ構造を想定しています。
project/
closure-library/ (as checked out from SVN)
js/ (my JS code)
app.html
(-p
パラメーターは、指定されたディレクトリ内のすべての js ファイルをトラバースし、必要に応じて検索する複数のディレクトリを指定できるとドキュメントに記載されています。)
上記の呼び出しにより、メインの app.html の隣に my-deps.js ファイルが作成されます。これを使用して、アプリケーションを実行します。作成されたファイルには、JS ファイルに関する情報が含まれてjs/
おり、次のようになります。
goog.addDependency('../../../js/controllers.js', ['proj.controllers'], []);
goog.addDependency('../../../js/ui.js', ['proj.ui'], ['proj.controllers']);
- 最初の文字列は、 closure-library/closure/goog/base.js に相対的なJS ファイルへのパス(これは重要です!)、2 番目の配列はgoog.provide
-d 文字列のリスト、最後の配列はリストです。goog.require
-d 文字列の。
今app.htmlに私は持っています:
<script src="closure-library/closure/goog/base.js"></script>
<script src="my-deps.js"></script>
<script>
goog.require("proj.ui");
</script>
<script>
// here we can use the required objects
</script>
ノート:
- クロージャーのbase.jsを含めることに加えて、生成したdeps.jsを含めます
- チュートリアルで述べたように、
goog.require
呼び出しは別の script タグにある必要があります。これは、必要なスクリプトを読み込むために script タグを追加し、現在の script タグが処理を終了した後に読み込まれるためです。
落とし穴:
- 上記の問題は、パスが base.js に関連しています。
goog.require
base.js ベース URL (つまり、base.js リーフ名なし) と deps.js の goog.addDependency の最初のパラメーターを連結して、ロードするスクリプト URL を作成します。
- calcdeps.py は Windows ではうまく動作しません。特に、deps.js 文字列リテラルでバックスラッシュを使用するとうまくいきません。
- 何かがうまくいかない場合は、calcdepsに言及しているすべての問題に目を通し、チェックアウトが最新であることを確認してください。