Как пойти о расширении JQuery (плюс пользовательский интерфейс) и можно ли это сделать чисто? - PullRequest
0 голосов
/ 07 апреля 2011

Итак, есть замечательная библиотека jQuery, и с ее помощью можно делать потрясающие вещи. Пишите меньше, делайте больше - действительно.

Но каждый магазин может чувствовать, что у него есть некоторые повторяющиеся модели использования (одни и те же виджеты, одни и те же диалоговые окна и тому подобное), и, поскольку они всегда используют jQuery, они считают, что удобно немного расширить jQuery, чтобы включить свои собственные собственные вещи.

Теперь позвольте мне немного расширить значение этого маленького слова «расширить», что я собираюсь сделать, описав ситуацию на моем нынешнем рабочем месте. Ребята из JavaScript в этом магазине сделали копию библиотеки jQuery в версии X (сравнительно недавно) и добавили некоторые свои собственные. На самом деле, внутренние материалы основаны на jQuery SDK , который, насколько я могу судить, многим не известен, так как кажется, что он не известен Google по состоянию на 6 апреля , 2011. Вы можете видеть, что у него есть функция jQuery.ready, которая, насколько я могу судить, не является частью стандартной библиотеки jQuery. Итак, они расширили jQuery.

Эта функция jQuery.ready является хорошим местом для начала разговора о потенциальных (и явных) недостатках принятого подхода. Что ж, вы подумали бы, что ready означает готовность, но, увы, это не так: вместо регистрации обратного вызова, когда DOM достаточно готов, он, кажется, выполняется, как только анализируется <script>. Что действительно нелогично; они должны были вызвать функцию jQuery.notReady, это было бы справедливо.

Справедливо, потому что я пользователь этой измененной библиотеки. И этот недостаток не единственный, я также обнаружил, что функция ep.ajax, которая должна вести себя как jQuery.ajax, но с некоторыми расширениями, не выполняет обратный вызов success. [Обновление ради правильности: эта ошибка при выполнении обратного вызова произошла из-за того, что код обратного вызова получил доступ к несуществующему свойству.] Кроме того, простые диалоги, вызванные функцией dialog модифицированной версии библиотеки, выглядят неработающими и не работают должным образом.

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

Что подводит меня к теме моего вопроса, вероятно, легко поддается ответу. Являются ли эти недостатки, если нет необходимости, такими, по крайней мере, общими зазорами, с которыми можно столкнуться при расширении jQuery? Я спрашиваю, потому что я далеко не эксперт по JavaScript или jQuery, но я знаю по другим языкам программирования, что совершенно возможно расширять объектные системы чистым способом, не изменяя исходную версию библиотеки. На самом деле, вы бы никогда этого не сделали, потому что тогда вы сами по себе с QA, исправлениями, обновлениями, документацией и т. Д. Так в чем же дело? Это невозможно в JavaScript? Или они просто испортили работу по расширению jQuery? Как бы вы расширили jQuery и jQuery UI? Указатели приветствуются. Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Расширить jQuery очень, очень просто !

Вот почему плагинов для jQuery так много.

Посмотрите на эту страницу: http://docs.jquery.com/Plugins/Authoring

Подводя итог, все, что вам нужно сделать, это:

$.fn.myPlugin = function() { 
    // 'this' refers to the jQuery collection

    return this.each(function() {
      // now 'this' refers to each element in
      // the jQuery collection
    });
};

Худшее, что вы можете сделать, это назвать свой плагин (расширение jQuery) тем же именем, что и существующий метод jQuery.например, css.Фактически, вы хотите оставить jQuery нетронутым и просто добавить все плагины после этого, чтобы предоставить вам дополнительную функциональность / виджеты, которые вам нужны.

1 голос
/ 07 апреля 2011

Чтобы расширить jQuery, напишите плагин .jQuery имеет отличную архитектуру плагинов, которая обеспечивает чистое расширение - это одна из причин его популярности.

Чего вы не хотите делать, так это раскручивайте jQuery в свой собственный my-jquery-1.5.1.js или аналогичный и начните редактировать сам код.В этом случае вы отрезаете себя от любого значимого пути обновления.Если авторы jQuery находят серьезную ошибку, вы не можете просто взять новую версию с исправлением - вы должны либо включить свои изменения в новую версию, либо включить исправление ошибки в свою пользовательскую версию.

Такда, есть чистый и подходящий способ расширить jQuery.Написать плагин или многие из них.Форкинг, скорее всего, неправильное решение.

...