私は最近、リッチインターネットアプリケーションの開発に関連して、JavaScriptプログラミングを大量に行ってきました。開発開始時の私の見解は、現在とほぼ同じです。JS RIAは機能しますが、開発ツールが不足しています。
私が特に見逃したツールの1つは、依存関係を管理するためのものでした。私が見つけたのは、JSファイルの依存関係をすべて宣言するHTMLページがたくさんあり、これを維持するのが難しくなったということです。
私が知りたいのは、私が着手したプロジェクトであるMavenJavaScriptImportについてのあなたの考えです。私の意図は、最終的にプロジェクトをオープンソースとしてリリースすることですが、現時点では、プロジェクトをいじくり回しているだけです(ただし、すでに多くのことが開発されています)。
依存関係の宣言
Mavenを使用してJSファイルを依存関係として宣言することに基づいた私の考え。これは、pomファイルでjQueryへのプロジェクトの依存関係を宣言する方法です。
<dependency>
<groupId>com.jquery</groupId>
<artifactId>jquery</artifactId>
<version>1.4.2</version>
<type>js</type>
</dependency>
jQueryに依存するファイルには、依存関係を宣言する2つの方法があります。
- コメントブロック内の@importステートメントを介して; また
- 必要なグローバル変数を宣言するだけです。
輸入
明示的なインポートは次の形式を取ります。
/**
* @import com.jquery:jquery
*/
ご覧のとおり、インポートの形式はです<groupId>:<artifactId>
。このアプローチには、依存関係を持つjsファイルで宣言されたファイル/バージョン情報がないという利点があります。これらのGAVパラメータは、POMファイルで宣言されたアーティファクトに解決されます。
グローバル変数
上記の@importの代わりに、依存ファイルがグローバルスコープで変数を宣言する場合、必要なのはそれらのグローバルシンボルのいずれかを宣言するだけです。たとえば、ファイルにjQueryが必要な場合:
var $;
... $はもちろん、jQueryによって定義されたグローバルです。
すべての依存関係がグローバルシンボルを宣言しているわけではないため、@ importも提案されていますが、必要なシンボルを宣言することは、すてきでクリーンです(そしてJSLintに準拠しています!)。
結論は
最終的に、JSリソースを必要とするHTMLファイルは、すべての依存関係ではなく、必要な直接のリソースを宣言するだけです。私のMavenプラグインは、すべてのJSファイル(ソースファイルと依存関係)を実行し、シンボルツリーを構築します。リソースを含むすべてのHTMLファイルには、すべての依存関係が確実に含まれるように、プラグインによって挿入されたスクリプト要素が含まれます。これはすべて、プロジェクトのフェーズがテストの前などに実行されたとき、またはリソースフェーズが実行されたときに、魔法のようなMavenの方法で発生します。
それで、あなたはどう思いますか?これは、JS RIAプロジェクトで使用する可能性のあるものですか?