![](/img/trans.png)
[英]Module pattern with Closure Compiler and ADVANCED_OPTIMIZATIONS
[英]Can a pattern with getters and setters be avoided and still minify JavaScript with Closure ADVANCED_OPTIMIZATIONS?
我想在ADVANCED_OPTIMIZATIONS
模式下使用Closure Compiler縮小JavaScript。 這是我目前正在嘗試的一種模式:
var myClosure = (function () {
var NS = {};
NS.foo = 100;
var MyConstructor = function (aValue) {
this.aValue = aValue;
};
NS["MyConstructor"] = MyConstructor;
MyConstructor.prototype.setAValue = function (v) {
this.aValue = v;
};
NS["MyConstructor"].prototype["setAValue"] = MyConstructor.prototype.setAValue;
MyConstructor.prototype.readAValue = function () {
return this.aValue;
};
NS["MyConstructor"].prototype["readAValue"] = MyConstructor.prototype.readAValue;
return NS;
}());
window["myClosure"] = myClosure;
它工作正常,我可以用以下代碼調用縮小的代碼:
var obj = new myClosure.MyConstructor(10);
alert(obj.readAValue());
obj.setAValue(100);
alert(obj.readAValue());
一個JSFiddle進行演示。
盡管上述工作有效,但是編寫該項目將需要的所有getter和setter以便調用已編譯的代碼將非常麻煩。
我是否可以使用某種模式來避免使用getter / setter方法?
或者,如果不是,是否有辦法讓我判斷重構代碼以使其可通過ADVANCED_OPTIMIZATIONS
進行調用是否值得。 (我估計添加方法將使未編譯代碼的行數增加5%以上)。此外,我目前有大約1,300個QUnit斷言測試。 要運行這些測試,需要進行將近10,000項作業,這些作業必須從以下內容中進行重寫:
obj.ValueA = 100;
obj.ValueB = 200;
至
obj.SetValueA(100);
obj.SetValueB(200);
為了測試縮小的代碼。
因此,如果可能的話,絕對有必要采用其他方法。
@expose
創建了@expose
。
/** @expose */
MyConstructor.prototype.aValue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.