私は、急速にサイズが大きくなっている新しい JavaScript アプリケーションを開発しています。
私の JavaScript アプリケーション全体は、次のような方法で、単一のファイル内の単一の関数内にカプセル化されています。
(function(){
var uniqueApplication = window.uniqueApplication = function(opts){
if (opts.featureOne)
{
this.featureOne = new featureOne(opts.featureOne);
}
if (opts.featureTwo)
{
this.featureTwo = new featureTwo(opts.featureTwo);
}
if (opts.featureThree)
{
this.featureThree = new featureThree(opts.featureThree);
}
};
var featureOne = function(options)
{
this.options = options;
};
featureOne.prototype.myFeatureBehavior = function()
{
//Lots of Behaviors
};
var featureTwo = function(options)
{
this.options = options;
};
featureTwo.prototype.myFeatureBehavior = function()
{
//Lots of Behaviors
};
var featureThree = function(options)
{
this.options = options;
};
featureThree.prototype.myFeatureBehavior = function()
{
//Lots of Behaviors
};
})();
匿名関数と実行後の同じファイルで、次のようなことを行います。
(function(){
var instanceOfApplication = new uniqueApplication({
featureOne:"dataSource",
featureTwo:"drawingCanvas",
featureThree:3540
});
})();
このソフトウェアをオンラインにアップロードする前に、JavaScript ファイルとそのすべての依存関係を、デフォルトの Compression だけを使用して Google Closure Compiler に渡します。これで、1 つの素敵な JavaScript ファイルをオンラインで運用できるようになります。
この手法は、DOM 内に 1 つのグローバル フットプリントしか作成せず、アプリケーションの各追加機能を拡張するための非常に柔軟なフレームワークを提供してくれたので、私にとっては非常にうまく機能しました。ただし、このアプリケーション全体を 1 つの JavaScript ファイル内に保持したくないという点に到達しています。
開発中に 1 つの大きな uniqueApplication.js ファイルを使用することから、アプリケーションの機能ごとに個別のファイル (featureOne.js - featureTwo.js - featureThree.js) を使用するように移行したいと考えています。
オフラインでの開発テストが完了したら、Google Closure Compiler などの何かを使用して、これらのファイルをすべて結合したいと考えていますが、これらのファイルをすべてそのスコープ内でコンパイルしたいと考えています。 1 つのファイル内 - オフライン テスト中も同じスコープにとどめておきたいと思います。
Google Closure Compiler はモジュールを渡すための引数をサポートしていることがわかりますが、このようなことを行うことに関する多くの情報を実際に見つけることができませんでした。
これをどのように達成できるか、またはDOMに1つのフットプリントしか残さない複数のファイルにまたがる単一のJavaScriptライブラリを作成するための開発プラクティスに関する提案はありますか?