Почему jQuery так широко применяется в сравнении с другими структурами Javascript?

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

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

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

Мудрый, оба 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-анимация:

// 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 предлагает следующие дополнительные функции:

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

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

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

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

Ответ 1

Это странный вопрос... У меня создается впечатление, что...

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

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

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

Оба фреймворка великолепны, но я считаю, что ваши интересы лучше всего подходят для отдыха с mootools.

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

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

Ответ 4

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

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

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

Итак, что значит "Знать JQuery", означает ли это, что вы знаете, как немного качаться .hide(). show(). fadeIn(). fadeOut()?

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

  • Согласованная модель программирования (есть способ JQuery, который работает)
  • Отличная документация. Когда я начал, у JQuery была лучшая документация.
  • Обширная сторонние плагины
  • Поддержка Microsoft - я разработчик asp.net, это помогает облегчить понимание клиентов. Кроме того, он поставляется с моими инструментами сейчас.
  • Много начальных руководств.
  • Веб-сайт JQuery выглядит лучше, чем веб-сайт MooTool. Мне жаль, что это важно, но это так. Помните, что многие из этих инструментов должны привлекать дизайнеров, а также разработчиков.

Ответ 9

YAGNI.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответ 10

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

Ответ 11

Вы говорите сами:

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

Большая часть дополнительного материала, который делает MooTools, - это материал, который нам просто не нужен.

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

Ответ 12

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

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

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

Ответ 13

Не только jQuery - хорошая библиотека, но и ее создатель, Джон Ресиг, также имеет некоторую уличную репутацию автора Pro Javascript Techniques.

У нас есть 2-3 копии этой книги вокруг нашего офиса.

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

Ответ 14

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

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

Ответ 15

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

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

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

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

Ответ 16

Другая причина: проще продать jquery руководству. Выполняя внутреннее развитие asp.net в корпоративной среде, магические слова "поддерживаются Visual Studio".

Ответ 17

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

Ответ 18

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

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

Ответ 19

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

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

Ответ 20

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