2011-11-07 7 views
1

質問があまりにも非特異的ではないことを願っています。現時点では、私はjQuery用のプラグインを作成しようとしていますが、私はそれを構造化するさまざまな方法と闘っています。私はbxSliderを見つけました、そして、これがプラグインコードのためにかなりアクセス可能であると思った。ここに簡単な例があります:このjQueryプラグインを使用すると(私ではない)良いコーディング方法が得られますか?

(function($){ 

$.fn.letSlider = function(options){  

    var defaults = { 
     speed: 500,       
     onBeforeSlide: function(){} //Callback   
    } 

    var options = $.extend(defaults, options); 

    //cache base element 
    base = this; 

     //public functions 
     this.init = function(){ 
      text = giveText(); 
      alert(text + ' ' + options.speed); 

     }; 

     //private functions 
     function giveText(){ 
       return 'blubb'; 
     }; 

    this.each(function(){ 
     // make sure the element has children 
     if($(this).children().length > 0){ 
      base.init(); 
     } 
    }); 

    return this;       
} 
})(jQuery); 

私は理解することができる明確な構造を持っています。しかし、それは私が今までアドバイスしてきたすべてのプラグインの構造とはかなり違っているように見えます。それでも、私は必要なものすべてを公開しています。オプション、コールバック、プライベートおよびパブリック関数です。そしてそれによって、それは連鎖可能でなければなりません。私がすでに気づいたことの一つは、基本的にすべてが最初の$ .fn.bxSlider = function(options){...であり、これまでに見たことがないことです。

他のプラグインの構造については、あまりに複雑すぎて(私には恥じらいます)、または実装に失敗しています。たとえば、http://www.learningjquery.com/2007/10/a-plugin-development-patternで私はopts(options変数)をプライベート関数またはパブリック関数で利用できませんでした。しかし、私は逃げる。 ...

答えて

0

私はあなたがしようとしているプラ​​グインに最も適した技術を使用する必要があると思います。あなたが与えた例は、まずは良いテンプレートのように見えます。

optsへのアクセスに問題があった場合は、$ .fn.hilight関数内のプライベート変数です。当然、同じスコープの外で定義されたメソッドはそれにアクセスできません。

ここにある例では、optionsもプライベート変数ですが、その下に定義されているメソッドは同じスコープにあり、アクセスが許可されています。

例1:

foo = function() { 
    var secret = "foo"; 
} 

foo.bar = function() { 
    alert(secret); // NOT OK! 
} 

例2:

foo = function() { 
    var secret = "foo"; 

    this.bar = function() { 
    alert(secret); // OK! 
    } 
} 
+0

ああ、ありがとう、私はあまりにも範囲を昨日見て混乱していた。実際、最初の例で示した構造は、まさにあなたが意味することです。 – Narretz

1

ベストプラクティスに従っているかどうかを知りたい場合は、オーサリングプラグインでjQuery's own documentationから始めます。彼らはかなり簡単に従う例を提供しました。

+0

おかげで、私はそれを読んで、私はそれが少しあまりにも複雑だと思ったのに。基本的には、上記の構造とjQueryの推奨機能の能力を推測しました。 – Narretz

関連する問題