Использование этого плагина jQuery (не моего) хорошая практика кодирования?

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

Я надеюсь, что вопрос не слишком неспецифичен. На данный момент я пытаюсь написать плагин для jQuery, но я борюсь с различными способами его структурирования. Я нашел bxSlider и подумал, что это довольно доступно для кода плагина. Вот простой пример:

 (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) доступной в частных или общедоступных функциях. Но я отвлекся. …

Ответ №1:

Если вы хотите знать, следуете ли вы лучшим практикам, я бы начал с собственной документации jQuery по разработке плагинов. Они предоставили довольно простые для понимания примеры.

Комментарии:

1. Спасибо, хотя я прочитал это и подумал, что это слишком сложно. В принципе, я хотел получить обоснованное предположение о возможностях вышеупомянутой структуры по сравнению рекомендация jQuery.

Ответ №2:

Я думаю, вам просто нужно использовать любые методы, которые наилучшим образом подходят для плагина, который вы пытаетесь создать. Приведенный вами пример выглядит как хороший шаблон для начала.

Если у вас возникли проблемы с доступом 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!
  }
}
  

Комментарии:

1. Ах, спасибо, я был слишком смущен, чтобы увидеть область вчера. На самом деле, структура, которую я имею в первом примере, делает именно то, что вы имеете в виду.