2012-02-22 2 views
0

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

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

(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)); 

(Если вы заинтересованы, полный источник виджета can be found here.)

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

+0

Похоже, что вы должны поддерживать зависимость от пользовательского интерфейса jQuery. – jrummell

+0

Я работал бы через '$ .fn' и полностью удалял зависимость. Фабрика виджета действительно не делает для вас многого, это простой способ решить некоторые из распространенных проблем, с которыми сталкиваются плагины, повторное подключение экземпляров, хранение данных и т. Д., Нетрудно сделать эти вещи для себя ... -ck – ckozl

+0

Нет причин для добавления зависимости обратно. (Или вы хотите уточнить?) Единственное, что я использую из jQuery UI, это фабрика виджета, и это доступно в виде отдельного файла. Я рассматриваю возможность выбора двух вариантов: использовать jQuery UI или включить файл фабрики виджета. Я действительно начал этот плагин с $ .fn, и я перенес несколько месяцев назад. Конечно, фабрика виджета не нужна для создания плагина, но я не вижу, чтобы я возвращался. –

ответ

0

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

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

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

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

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

  • Виджет по-прежнему работает с обычным jQuery, но я по-прежнему получаю выгоду от использования Widget Factory.

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

Смежные вопросы