Отличный шаблон плагинов для jQuery? - PullRequest
0 голосов
/ 17 января 2012

Я был отклонен из CodeCanyon всего несколько минут назад, и я немного разочарован, потому что я использовал этот шаблон из CSS-хитрости:

http://css -tricks.com / сниппеты / JQuery / JQuery-плагин-шаблон /

Я не ниндзя JS, и я подумал, что это сплошной шаблон, но вот некоторые проблемы с ним:

  • Используются два пространства имен
  • Не соответствует обычным шаблонам. Пример: var zoomWizard = function(el, options) {
 var base = this;
 base.$el = $(el); base.el = el; };

В качестве «правильного» подхода к приведенному выше фрагменту мне дали «this.el = el» и т. Д., Что нарушает всю цель base.el! Идея «base» - ссылаться на объект «this» из других функций без проблем с областью видимости. По крайней мере, насколько я понимаю.

Но подождите, есть еще: - Это плохая практика для определения методов внутри функции конструктора; тратит ресурсы процессора и памяти. Пример:

base.functionName = function() {
    ....
}
  • Параметры по умолчанию должны быть определены в $ .fn.zoomWizard вместо $ .zoomWizard

Я попробовал поискать в поисках надежного шаблона плагина jquery, который не предлагает использовать вышеупомянутые практики, но не смог найти ничего «высокого профиля», как на css-tricks. Какие-либо предложения?

Спасибо за ваше время!

1 Ответ

0 голосов
/ 17 января 2012

Я не уверен, что это отвечает на ваш вопрос (я надеюсь, что это так). Я использую этот шаблон для создания плагинов jquery:

(function($){
$.fn.extend(
{
    //plugin name here
    functionName: function(options) 
    {

        //Settings list and the default values
        var defaults = 
        {
           defaultvar1: "value",
           defaultvar2: "value"
        };

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

        return this.each(function() 
        {
            var o =options;
            var obj = $(this);             
            //do stuff here
            }
    });
})(jQuery);

AFAIK два пространства имен в порядке, если это две разные функции. Если это не так, то вы «загрязняете» список пространства имен и должны добавить модификаторы в качестве параметра aka .zoom("in", 300); и .zoom("out", 300);, а не .zoomIn(300) и .zoomOut(300).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...