Есть ли лучший способ использовать фабрику виджетов jQuery UI без jQuery UI? - PullRequest
1 голос
/ 23 февраля 2012

Я разрабатываю и поддерживаю виджет jQuery с именем jquery-ui-picklist . Я давно хотел удалить зависимость от пользовательского интерфейса jQuery, чтобы его можно было использовать как в приложениях jQuery, так и в приложениях пользовательского интерфейса jQuery.

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

(function($)
{
    if($.widget == null)
    {
        // Contents of jquery.ui.widget.js, straight from jQuery UI, goes here.
    }

    $.widget("awnry.pickList",
    {
        // My widget's actual code goes here.
    });
}(jQuery));

(Если вам интересно, полный источник виджета можно найти здесь .)

Само собой разумеется, что чувствовать себя грязным и хакерским, включая, буквально, код поставщика, как этот. Есть ли более правильный, элегантный или лучший способ отбросить зависимость jQuery UI, не заставляя моих пользователей добавлять еще одно JS-включение на свои страницы?

1 Ответ

0 голосов
/ 24 февраля 2012

После рассмотрения моих вариантов я в итоге удалил из моего виджета оператор if() и код Widget Factory.

У пользователей моего виджета есть два варианта.Если их страница содержит пользовательский интерфейс jQuery, ничего лишнего не нужно делать.Если их страница содержит только обычный jQuery, jquery.ui.widget.js (который поставляется для удобства с моим виджетом) также должны быть включены.

Мои причины для принятия решения:

  • Код виджета не загроможден кодом поставщика.

  • Виджет отделен от какой-либо конкретной реализации или версии фабрики виджетов.Другими словами, $.Widget может исходить из пользовательского интерфейса jQuery или jquery.ui.widget.js или где-либо еще;виджету все равно.

  • Виджет по-прежнему работает с обычным jQuery, но мне все еще полезно использовать фабрику виджетов.

  • ОбновлениеФабрика виджетов - это просто добавление нового файла.

...