Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему раньше JQuery всем нравился, а теперь все от него уходят? Что произошло-то? Чем плох JQuery?

Солнечного Настроения Ученик (20), закрыт 4 года назад
Мне JQuery очень нравится. Он делает разработку быстрее (меньше кода), проще (JQuery более высокоуровневый, чем чистый JS) и надежнее (кроссбраузерность).

Что вы можете посоветовать вместо JQuery? Неужели чистый JS? Я Fullstack, я не знаю настолько хорошо чистый JS. Может, мне тогда и дальше использовать JQuery?
Лучший ответ
Максим Искусственный Интеллект (196689) 4 года назад
Когда-то JS умел мало и JQuery реально был очень полезен. Со временем JS подтянулся и научился делать всё то же самое. Поэтому сегодня можно работать без JQuery так же эффективно. Недостаток JQuery в том, что он всё обёртывает в свой JQuery-объект, который не поймёшь что такое. Что это? Элемент? Множество? Если это множество, то с ним не поработаешь как с массивом. К нему не применишь функции массивов и так далее. Если это элемент, то опять-таки это не стандартный HTML-элемент из JS, а какой-то другой. Таким образом JQuery отделяется от стандартного JS, создаёт свой собственный мир. И приходится всегда задумываться: это стандартный JS или это JQuery? Надо объект упаковать в JQuery или он уже упакован? Надо его распаковать? Ну и конечно производительность без JQuery выше.
Солнечного НастроенияУченик (20) 4 года назад
<<
Когда-то JS умел очень мало и JQuery реально был очень полезен. Со временем JS подтянулся и научился делать всё то же самое.
>>
Так ведь JQuery написан на JS. Каким образом JS мог уметь меньше, чем JQuery?
Максим Искусственный Интеллект (196689) Речь не про то, что на JS нельзя было чего-то написать в принципе, а про готовый функционал, который упрощает работу. Очень странный вопрос, ведь ты впрягаешься за JQuery.
Остальные ответы
Elepsis Eclipse Гений (64039) 4 года назад
Раньше чтобы при клике на элемент, переключать ему какой-то класс, писали примерно такую функцию:

var bubu = document.getElementById('bubu');

bubu.onclick = function(){
  toggleClass(this, "active");
}

function toggleClass(elem, className) {
  var reg = new RegExp("(^|\\s)" + className + "($|\\s)", "ig");
  if( elem.className.match(reg) ){
    elem.className = elem.className.replace(reg, "");
  } else {
    elem.className += (" " + className);
  }
}
_______________________

А jQuery пришел с кучей готовых и коротких решений. Там для того же действия пишут

$('#bubu').on('click', function(){
  $(this).toggleClass('active');
}
______

Или те же fadeOut, fadeIn.

А сейчас в самом JS уже можно писать

elem.classList.toggle('active');

Код на jQuery всё еще местами короче, чем на JS, но сейчас есть куча песочниц, с авто-дополнением кода... в итоге чуть более длинный код на JS, по времени не приходится писать дольше, чем на jQuery.

И не хочется подключать целую библиотеку, чтобы сэкономить пару секунд на писанину (что не факт).
Солнечного НастроенияУченик (20) 4 года назад
Зато JQuery кроссбраузерный. И там есть JQuery UI - горизонтальный слайдер для фильтрации по цене, например. Календарь. Сам такое напишешь?
Elepsis Eclipse Гений (64039) Во-первых напишу, во вторых - кроссбраузерность, да, хороший плюс, когда надо поддерживать все старые браузеры)
H-p A Просветленный (46810) 4 года назад
И никто не сказал, что сейчас есть фреймворки - React и Vue - именно они и заменили jQuery, поскольку ещё более "высокоуровневые", чем он.

Надо мыслить шире. Тогда окажется, что ещё jQuery заменили готовые опен-сорсные проекты сайтов - некоторые коммерческие делаются на их основе. Таких пока единицы, но и одного хватит, чтобы сделать карьеру. Это сложные и крупные сервисы, а не просто сайтики.
Senior Backend Developer Оракул (77478) 4 года назад
Одна из главных причин - появление мобильный устройств, которое в свою очередь стимулировало более четкое разделение разработки на frontend и backend. Соотвественно такое разделение позволяет легко прикрутить к одному backend'у несколько frontend'ov (декстопный и мобильный), а для этой задачи jQuery на фронте мягко сказать не подходит, нужно формировать полностью страницу на основе полученных с бэка данных (обычно json).
Похожие вопросы