0

JavaScript プラグインを完成させ、現在は最適化に集中していますが、ファイル サイズの問題が発生しています。私は何度もすべてを調べて(変数名、参照など)を減らし、すべてのメソッドを最適化しました。

重量はすべてユーザー設定にあります。このプラグインは、設定のみによるユーザーの大幅なカスタマイズを目的としています...そのため、多くの設定が含まれています。さらに、「スキン」が利用可能で、次のようにデフォルト設定オブジェクトの単なるバリエーションです:

//SETUP MAIN PLUGIN DEFAULTS OBJECT
var default:{ 'setting1' : value1, 'setting2' : value2 },

// INIT METHOD
init:function(options){
   var defaults=Plugin.defaults;
        //SETUP SKINS SETTINGS OBJECTS
    switch(options.skin){
           case 2: 
               var defaults={ 'setting1' : value1, 'setting2' : value2};
           break;
           //ETC...
        };
Boxaroo.settings=$.extend({},defaults,options||{});
}

基本的に、ユーザーは最初の設定としてスキン番号を渡すことができます。これにより、特定のプラグインの既定のセットが読み込まれます。これは、スキン番号の設定の後に渡される追加の設定でオーバーライドできます。

すべてが完璧に機能しますが、ケース/スキンごとにユーザー設定名を繰り返す必要があることを意味します... スキンが 6 つあるため、「setting1」は 6 回繰り返されます (ただし、値は異なる場合があります)。これらの6つのオブジェクトを宣言することを要約する方法があるかどうか興味がありますか?

4

2 に答える 2

1

完全に理解することはできませんが、そのように値を変更したらデフォルトを宣言しないのはなぜですか:

var defaults=Plugin.defaults;
switch(options.skin){
       case 2: 
           defaults.setting1 = value1;
           ...
       break;
       //ETC...
    };

または、jQuery 拡張を再度使用します。

var defaults=Plugin.defaults;
switch(options.skin){
       case 2: 
           $.extend(defaults, {setting1 : value1, ...};
       break;
       //ETC...
    };
于 2013-10-30T19:36:38.887 に答える
0

オブジェクトコンストラクターを使用できます

function Skin(data) {//use array to keep code short
    this.setting1 = data[0];
    this.setting2 = data[1];
};    
//SETUP MAIN PLUGIN DEFAULTS OBJECT
var default:new Skin([value1,value2]),//if skin object is equal to default

// INIT METHOD
init:function(options){
var defaults=Plugin.defaults;
    //SETUP SKINS SETTINGS OBJECTS
switch(options.skin){
       case 2: 
           var defaults=new Skin([value1,value2]);
       break;
       //ETC...
    };
Boxaroo.settings=$.extend({},defaults,options||{});
}    

または、スキンを変更するときに他に何もする必要がない場合は、スキンの配列を使用してスイッチケースを削除できます

function Skin(data) {
    this.setting1 = data[0];
    this.setting2 = data[1];
};  
//SETUP MAIN PLUGIN DEFAULTS OBJECT
var default:new Skin([value1,value2]),
var skins:[
        new Skin(["setting1 skin1","setting2 skin1"]),
        new Skin(["setting1 skin2","setting2 skin2"]),
        new Skin(["setting1 skin3","setting2 skin3"])
      ],
// INIT METHOD
init:function(options){
   var defaults=Plugin.defaults;
    //SETUP SKINS SETTINGS OBJECTS
    var defaults=skins[options.skin];
Boxaroo.settings=$.extend({},defaults,options||{});
}    

http://jsfiddle.net/7ffg5/

于 2013-10-30T22:08:36.127 に答える