Почему jQuery так широко используется по сравнению с другими фреймворками Javascript? [закрытый]


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

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

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

функция мудрый, как jQuery и MooTools позволяют легко выбор DOM и манипуляции:

// jQuery
$('#someContainer div[class~=dialog]')
    .css('border', '2px solid red')
    .addClass('critical');

// MooTools
$('#someContainer div[class~=dialog]')
    .setStyle('border', '2px solid red')
    .addClass('critical');

как jQuery и MooTools позволяют легко AJAX:

// jQuery
$('#someContainer div[class~=dialog]')
     .load('/DialogContent.html');

// MooTools (Using shorthand notation, you can also use Request.HTML)
$('#someContainer div[class~=dialog]')
     .load('/DialogContent.html');

и jQuery и MooTools позволяют легко DOM Animation:

// jQuery
$('#someContainer div[class~=dialog]')
    .animate({opacity: 1}, 500);

// MooTools (Using shorthand notation, you can also use Fx.Tween).
$('#someContainer div[class~=dialog]')
    .set('tween', {duration: 500}) 
    .tween('opacity', 1);

jQuery предлагает следующие дополнительные услуги:

  • большое сообщество сторонников
  • плагин Репозиторий
  • интеграция с Microsoft ASP.NET и VisualStudio
  • используется Microsoft, Google и другими

MooTools предлагает следующие дополнительные услуги:

  • объектно-ориентированный фреймворк с классической эмуляцией ООП для JS
  • расширенные собственные объекты
  • более высокая согласованность между браузерами для поддержки собственных функций.
  • более простой код повторное использование
  • используется консорциумом Всемирной паутины, Palm и другими.

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

Итак, вопрос в том, почему вы или ваш команда выбирает jQuery над другой структурой JavaScript?

Примечание: пока я знаю и признаю jQuery это отличная структура, есть и другие варианты вокруг, и я пытаюсь принять решение о том, почему jQuery должен быть наш выбор по сравнению с тем, что мы используем прямо сейчас ( MooTools)?

20 71

20 ответов:

Это странный вопрос... У меня сложилось такое впечатление...

  1. вы очень хорошо знакомы с mootools и в полной мере использовать его модель ООП, что делает ваш код легче управлять и поддерживать уже.
  2. вы понимаете, что цель jQuery несколько отличается и настроена на манипуляцию DOM и AJAX, и что mootools делает все, что делает jQuery, а затем некоторые.
  3. звучит так, как будто вам не нужно использовать много на пути 3-й партии плагины, которые делают точки популярности и поддержки jQuery немного менее важными.

итог, это шумиха? jQuery превращается в один из этих волшебных маркетинговых модных слов, таких как "AJAX", .NET и Web 2.0 - что отлично подходит для них, но почему вы нужно оправдать пребывание с рамками, которые так хорошо работают для вас? Есть также деловые соображения, которые, как я полагаю, будут охватывать такие вещи, как:

  • основы долголетия, или mootools, вероятно, уйдет перед лицом постоянно растущего jQuery - очень сомнительно, поскольку они только что выпустили 1.3 beta 1 и имеют 2.0 в трубопроводах для выпуска к концу года.
  • стоимость персонала и их обучения (я полагаю, что найти программистов mootools будет сложнее, чем те, которые шлепают jquery на их C. V / резюме).
  • время (и стоимость), необходимое для поддержания и расширения ваших систем в каждой структуре, учитывая ваши ресурсы.

обе структуры велики, но я считаю, что ваши интересы лучше всего служить в пребывании с mootools.

лично jQuery делает именно то, что мне нужно.

Я стараюсь делать большую часть моих вещей в моем серверном коде, который хорошо структурирован: он имеет правильный ООП, слои и архитектуру MVC. Когда Я нужно чтобы сделать что-то с Javascript, я обнаружил (до сих пор), что jQuery имеет то, что мне нужно. Честно говоря, это делится на три категории:

  • простая манипуляция DOM, обычно показывая / скрывая материал без удара сервер.
  • Ajax вызывает, Nuff сказал.
  • UI perks, включая модальные всплывающие окна, анимацию, исчезающие переходы из / в скрытый / показанный. Я хардкор бэкэнд кодирования парень, и я отстой в UI вещи. Мне очень нравится, что jQuery позволяет мне программно сделать вещи, которые выглядят привлекательно.

кроме того, библиотека плагинов jQuery огромна, и я нашел довольно много библиотек, которые упрощают мой работа на стороне клиента. Хороший материал.

MooTools вводит OO мышление, что приятно, но не то, что мне нужно. Я хочу сохранить свою структуру на бэкэнде, и не нужно вводить это мышление в мой клиентский код. Для меня клиентский код-это очень маленькая часть акцента, и думать об этом с точки зрения класса-это слишком много, и намного больше работы. Я чувствую, что я бы создавал два приложения вместо одного, если бы я использовал то, что я думаю, было бы лучшей практикой для MooToools.

Я думаю, что подводит итог, почему его так популярны, особенно здесь. По большому счету, мы люди типа backend code-y, и jQuery позволяет нам сделать привлекательный пользовательский интерфейс программно и позволяет нам сосредоточиться на нашем бэкэнд-ядре.

Я не поклонник навязывания классической объектной ориентации на JavaScript. Существует так много способов сделать это, что один программист JavaScript может использовать Base2 для OO, а другой использует Prototype или Moo или JS.Класс или Джуз. Resig сознательно решил не добавлять классы в jQuery, и это побудило людей найти более родные JavaScript способы решения проблем.

в результате мне легче читать JavaScript, который пишут другие авторы jQuery, и писать код jQuery это легче для других читать. Я обычно не пытаюсь эмулировать класс ООП в JavaScript. Вместо этого я создаю объекты на лету и передаю их, и у меня есть много массивов объектов. Это так легко понять, что я даже обнаружил, что переношу это мышление на языки ООП!

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

Я думаю, что это во многом вопрос времени. Когда массы программистов прыгнули в AJAX, jQuery был горячей новой классной вещью, которая решила их проблемы.

другие библиотеки в значительной степени догнали. YUI, ExtJS, Dojo, Moo--они все великолепны. Но я не могу использовать их все.

Я работаю достаточно усердно, пытаясь выяснить последствия новых функций библиотеки I do использовать. Например, jQuery добавил живые события с 1.3. Этот на самом деле позвольте мне вырезать код из многих страниц. Му тоже предлагает это сейчас, и как я должен знать, что это произошло, если это так?

Я уверен, что Му является удивительным. Я хотел бы иметь время, чтобы узнать его. Но вы смотрели на Додзе? Я должен был использовать его в одном проекте и обнаружил, что он также вытащил большинство замечательных идей из jQuery. И у него есть pubsub и хорошая поддержка для Comet.

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

Если вы все-таки решите пойти на jQuery, подумайте, прежде чем решить, следует ли прикрепить библиотеку OO. Есть некоторые классные (например, JS.Class или Joose), но сделать этот шаг означает изолировать себя от того, как большинство программистов JavaScript кодируют.

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

Я тот, кто использует оба широко. JQuery на работе (принят, потому что он был "более широко принят") и Mootools на личных проектах. В результате я постоянно чувствую себя калекой при использовании JQuery; будь то с поддержкой JSON, создание элементов, обработка событий... и так далее. На работе я обнаруживаю, что пишу цепочки длиной 75 событий... и в результате я чувствую себя грязным.

моя основная общая говядина с JQuery, однако, заключается в том, что существует отсутствие согласованности или практики, когда речь идет о плагинах и сторонних разработчиках. Анекдотический "больше плагинов доступны" действительно не помогает мне, когда нет согласованности между плагинами, структурно или иным образом. Мне потребовалось несколько недель, чтобы узнать "принято" подключаемая модель, и даже тогда, я адаптировал свой собственный прагматический стиль в нее, поскольку я нахожу ошибку и неэффективность в текущих структурах. Можно сказать, что это "профи", что любой может вскочить и начать JQuerying его. Тем не менее, я более склонен называть это "Con", поскольку вы увидите 30 различных способов добиться чего-то, и трудно закрепить принятый стандарт.

Итак, что значит "знать JQuery", означает ли это, что вы знаете, как немного качаться .скрывать.)(шоу.)(fadeIn().затухание()?

когда я должен получить гангстер на моем JS на работе, я скучаю по мне некоторые Mootools. Я имею в виду отсутствие родной поддержки JSON? Ну же......

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

как для плагины, в магазине приложений для apple есть что... 100к приложений? 50,000 приложений фарт. Конечно, есть много плагинов для JQuery, но соотношение мусора к стоимости велико.

jQuery дает вам доступ к четким и сжатым методам функционального программирования. С момента выпуска метода chaining in (LINQ) в C# 3.0 это очень хорошо работает для программистов .NET. Таким образом, переход от одного языка к другому очень прост. Чтобы иметь возможность запрашивать DOM для объекта или списка объектов, работает намного лучше для нас. Именно сила выбора jQuery делает его таким привлекательным, а затем расширяемость его, и, конечно же, все встроенные функции, которые приходят с ним, хороши. Кроме того, сообщество позади замечательно в том, что я сначала смотрю, чтобы увидеть, если кто-то еще сделал что-то, а затем попытаться сделать это сам, если решение не было найдено. И последнее...но, конечно, не в последнюю очередь...тот факт, что Microsoft собирается включить в Visual Studio 10 и поддержка это здорово. Инструменты Moo, прототип, etc. просто не могу конкурировать со всем вышеперечисленным.

рамки JS так похожи, во всяком случае. Если вы работаете с mootools в течение некоторого времени, придерживайтесь его. Знание вашей структуры гораздо важнее, чем выбор одного из них из-за того или иного.

на мой взгляд, mootools лучше для продвинутых программистов javascript, в то время как jquery лучше для программистов без javascript. Это то, что я думаю после прочтения обеих документов, заметьте, я не использовал ни одного из них. jQuery не поддерживает ядро javascript, функции привязка, клонирование объектов, укладка потоков, чтобы назвать несколько.

jQuery, как и любой фреймворк, делает то, что он делает, и если он не соответствует вашим потребностям, вы должны использовать что-то еще. Я не использую jQuery для выполнения сложного программирования на javascript, я использую его, потому что он делает манипуляции DOM и CSS3-стиль простыми, и 95% времени это то, что мне нужно.

Я тоже не смотрел на MooTools некоторое время. Но вот мои очки для JQuery:

  1. последовательная модель программирования (есть способ JQuery, который работает)
  2. отличная документация. Когда я начал JQuery была лучшая документация там.
  3. широкое 3rd party plugings
  4. поддержка Microsoft -- я являюсь asp.net разработчик, это помогает облегчить сознание клиентов. Плюс он поставляется с моими инструментами сейчас.
  5. много руководств по началу работы.
  6. сайт JQuery выглядит лучше, чем сайт MooTool. Извините, но это не так. Помните, что многие из этих инструментов должны понравиться как дизайнерам, так и разработчикам.

YAGNI.

Да, это немного неуместно здесь, но это главная причина, по которой jQuery имеет большую базу, чем MooTools. Все эти дополнительные MooTools приносит к столу приятно, но YAGNI.

Это не о лучшем, это о удовлетворении-найти адекватное решение проблемы под рукой. jQuery прост в использовании, его основная цель-манипуляция DOM. Поскольку 95% людей, собирающих javascript, делают это только для того, чтобы манипулировать DOM, нет смысла идти через более длинную кривую обучения MooTools. MooTools просто не приносит ничего на стол для них, что jQuery не доставляет с меньшими усилиями.

MooTools требует от вас больше, прежде чем использовать его, jQuery позволяет вам быстро что-то бросить. Если вы начнете писать большие, тяжелые приложения js, вы можете столкнуться с некоторыми недостатками этого подхода, но опять же 95% людей, пишущих js, не делают этого, поэтому эти вещи для них не имеют значения. Они используют серверный язык за тяжелую работу и JavaScript на дом.

Если на то пошло, они могут не дело к вашей команде. Чтобы провести вас по спискам, точка за точкой (сначала jQuery):

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

Репозиторий Плагинов -- очень актуально, так как это помогает удержаться от изобретения колеса.

интеграция с Microsoft ASP.NET и VisualStudio -- очень актуально, если вы магазин .NET. На самом деле, это само по себе должно быть причиной для переключения, если вы делаете .NET.

используется Microsoft, Google и другими -- кого это волнует?

теперь для списка MooTools:

объектно-ориентированная структура с классической эмуляцией ООП для JS-не имеет значения, если природа ваших проектов не делает это плюсом. Я не знаю, что вы строите, но для интернет-магазинов это редко актуально. Большинство интернет-магазинов не имеют достаточно кода, чтобы сделать это плюс.

расширенные собственные объекты -- опять же не имеет значения для большинства веб-магазинов

более высокая согласованность между браузерами для поддержки собственных функций. -- Уместно

более простое повторное использование кода - это немного конфликтует с преимуществом jQuery большого репозитория. Большой репозиторий сам по себе говорит о повторном использовании кода. Я подозреваю здесь вы используете узкое определение повторного использования кода, которое может быть неуместным. Я повторно использовал много кода jQuery, который я построил, а также код MT.

используется консорциумом Всемирной паутины, Palm и другими. -- Неуместный. Единственная релевантность о том, кто еще использует то, что есть, если вы хотите работать там. Там больше актуальности в том, сколько магазинов используют его, чем в любом конкретном магазине, использующем его.

нет ни одного истинного способа приблизиться к кодированию javascript. Избавься от своей предвзятости кстати, и сядьте со своей командой и уберите их предвзятость с пути. Расскажите Турции о конкретных типах проектов, которые вы предпринимаете (и хотите предпринять), и сильные стороны каждой библиотеки применительно к этим случаям. (То, как они могут обрабатывать другие случаи, не имеет значения, потому что эти другие случаи не существуют.) Вы должны прийти к консенсусу из этого.

(YAGNI = вам это не понадобится, если мне нужно это объяснить.)

Я решил использовать jQuery в качестве нашей библиотеки пользовательского интерфейса по умолчанию именно потому, что он не расширяет или иным образом monkeypatch native objects, в отличие от prototype.js или mootools. Ударьте в угол документации, и действительно нет вопроса о том, какую структуру использовать.

вы как бы сами это говорите:

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

большинство дополнительных вещей, которые делает MooTools-это вещи, которые мы просто Не нужно.

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

Что мне не нужно в JavaScript, это определенно ООП и какая-то уродливая эмуляция объектов.

последний раз, когда я проверял MooTools (возможно, 1,5 года назад: -), у него была несовместимость браузера с манипулированием несколькими выборками.

Так что jQuery полностью выглядит нормально для меня.

jQuery не только хорошая библиотека, но и ее создатель, Джон Ресиг, также имеет некоторый уличный кредит как автор Pro Javascript Методы.

у нас в офисе есть 2-3 экземпляра этой книги.

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

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

Как и многие другие, я не хочу вводить ООП на основе классов в простые манипуляции пользовательского интерфейса. Вот для чего я использую jQuery: не так уж сложный пользовательский интерфейс. Когда мне нужно создавать богатые браузерные приложения, я всегда переключаюсь на большие решения (ExtJS, YUI, qooxdoo), которые предлагают множество готовых к использованию виджетов.

Большее Сообщество Пользователей и более широкое внедрение имеет большое значение при сравнении инструментов / библиотек, которые предлагают аналогичные функции и концепции. Большее сообщество означает больше поддержки, больше примеров, больше хороших идей и больше многоразовых фрагментов кода, что особенно важно, когда вы работаете над редким сценарием-скорее всего, кто-то еще сталкивался с этим раньше.

во-вторых, в тестах, которые я видел, jQuery быстрее, чем В MooTools.

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

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

еще одна причина: проще продать jquery менеджменту. Занимаясь внутренним, asp.net основанная разработка в корпоративной среде волшебные слова - "это поддерживается Visual Studio".

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

Я должен Второй много ответов...большая документация и поддержка сообщества имеет решающее значение. Раньше я ненавидел JS-программирование и избегал его, как plauge, но теперь я полностью принял его из-за jquery и быстрой кривой обучения.

Это не всегда о том, кто имеет лучшие технологии!

Mootools, не работает должным образом или не работает вообще при использовании прототипа jquery и т. д. Согласен, нет абсолютно никаких причин использовать их одновременно, но время от времени они приземляются на одной странице (ex. Плагины, слайд-шоу, виджеты и т. д.) и вещи перестают работать.

что само по себе недопустимо. Так что все реквизит для jquery, чтобы не создавать лишних головных болей!

Почему люди начали использовать факсы? В определенный момент выгода увеличивается экспоненциально.