簡體   English   中英

是否可以避免使用帶有getter和setter的模式,而仍然使用Closure ADVANCED_OPTIMIZATIONS最小化JavaScript?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM