私が作成したライブラリを最小限に抑えようとしています。残念ながら、私は数年前にライブラリの開発を開始したため、メソッドやプライベートプロパティを宣言する標準的な方法は使用していません。基本的には、私のコードは次のようになります。パブリックメソッドを保持するJavaScript圧縮ですか?
/** @class Sample abstract class. */
myname.space.AbstractClass = function() {
/** Sample protected property A
* @private
*/
this.longNameProtectedPropertyA = 10;
/** Sample protected property B
* @private
*/
this.longNameProtectedPropertyB = 20;
}
/** Sample public method A.
* @methodOf myname.space.AbstractClass#
*/
myname.space.AbstractClass.prototype.publicMethodA = function() {
return this.longNamePrivatePropertyA;
}
/** Sample public method B.
* @methodOf myname.space.AbstractClass#
*/
myname.space.AbstractClass.prototype.publicMethodB = function() {
return this.longNamePrivatePropertyB;
}
/** @class Sample concrete class.
* @extends myname.space.AbstractClass
*/
myname.space.ConcreteClass = function() {
myname.space.AbstractClass.call(this);
/** Sample protected property C.
* @protected
*/
this.longNameProtectedPropertyC = 30;
}
myname.space.ConcreteClass.trickyExtend(myname.space.AbstractClass);
/** Overrides publicMethodB of the base class.
* @methodOf myname.space.ConcreteClass# */
myname.space.ConcreteClass.prototype.publicMethodB = function() {
return this.longNameProtectedPropertyC * this.longNameProtectedPropertyB;
}
このような長い例では、私が使用するコーディングスタイルを示してみました。私は今日、それが非標準であることを認識しています。しかし、私の図書館はすでにそのように書かれており、完全に機能しています。
私の問題は、コードを小さくしたいということです。私が必要とするのは、プライベートプロパティの長い名前を圧縮することですが、パブリックメソッドの名前を保持する必要があります。
私はYUIコンプレッサとGoogleのクロージャコンパイラを試しました。私が必要としていたようには機能しませんプライベートプロパティとパブリックメソッドの両方の名前は、難読化されているか、またはいずれも難解でした。
これを行う方法はありますか?何百ものメソッド/プロパティにアノテーションを付けておくと、長い時間を費やす準備ができています。私を助けることができるミニファーはありますか?
これは面白いですね!なぜこれが助けになるのか聞いてもらえますか?それは実際に文字列であるので、識別子がミニマイザに隠れるからですか? – Tregoreg
はい、そうです。文字列(およびキーワード)は、私の最小化に影響を受けないままでなければなりません。グローバルメンバが最小化を生き残るようにしたい場合は、それを例えば以下のように記述します。 'ウィンドウ['myname'] ...'。 –
よろしくお願いいたします。私は実験を少ししかやっておらず、実際にはうまくいくようです。クールなことは、これは簡単に正規表現を使って行うことができ、私の時間を節約することです! – Tregoreg