我正在尝试最小化我创建的库。不幸的是,因为几年前我开始开发该库,所以它没有使用任何标准方法来声明方法和私有属性。基本上,我的代码看起来像:
/** @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的Closure编译器。都没有按我需要的方式工作。私有属性和公共方法的名称都被混淆了,或者都没有。
有办法怎么做?如果有帮助的话,我已经准备好花费很长时间来注释我的数百个方法/属性。是否有一些可以帮助我的minifier?
答案 0 :(得分:1)
您可以尝试使用关联语法在最小化之前重写,例如:
myname.space.AbstractClass.prototype['publicMethodA'] = function() {
return this.longNamePrivatePropertyA;
}