Комментарии 33
А что, если я скажу вам, что вообще всё, что есть в JQuery решается аналогичным способом на чистом JS + CSS и местами ванильный код даже лаконичнее?
Жизнеспособность Jq обуславливается лишь тучей плагинчиков, написанных в бородатые годы.
И в своей нише JQuery будет рулить еще долгие годы, хотя снизу ее будут подпирать чистый JS+CSS, а сверху Angular, React и т.п. — разные задачи, разные средства для решения.
Я уже много раз писал про это в разных местах: jQuery всё равно более удобен в некоторых случаях, чем нативный JS.
Возьмите, скажем, ту же возможность повесить отслеживатель события на какой-то DOM элемент, который будет перехватывать какие-то конкретные события внутри него на нижележащих DOM элементах. Как такое дело на нативном JS написать быстро и просто?
Простые и удобные методы для простой анимации, вроде toggle и fadeToggle
Метод closest для быстрого нахождения ближайшего элемента в вышеидущем дереве.
Всякие короткие методы для ajax запросов, вроде post и load. Просто делающие код более лаконичным.
Метод html, который позволит вставить в ваш DOM элемент любой HTML код, и даже если внутри него будут теги <script>
— все они будут корректно обработаны, тоже благодаря jQuery. А вы думали что оно само по себе в браузерах заработает через какой-нибудь element.innerHTML = newHtmlData
? Не заработает.
Методы serialize и serializeArray, позволяющие легко получить готовые для отправки POST запросом данные из вашей формы, или получить массив всех её данных.
Возможно, есть ещё что-то, о чём я и сам до сих пор не знаю. В любом случае, на мой взгляд, jQuery ещё очень рано списывать со счетов. У него достаточно удобных и приятных возможностей, вместе с которыми разработка становится более приятной.
С событиями сложновато, да.
Простые и удобные методы для простой анимации, вроде toggle и fadeToggle
Что-то подобное можно реализовать с помощью CSS 3.
Метод closest для быстрого нахождения ближайшего элемента в вышеидущем дереве.
В современных браузеров он уже реализован, для остальных есть полифилл на MDN.
Всякие короткие методы для ajax запросов, вроде post и load. Просто делающие код более лаконичным.
Для этого есть библиотека axios.
Метод html, который позволит вставить в ваш DOM элемент любой HTML код
Тут знаний не хватает. А documentFragment
так не работает?
Методы serialize и serializeArray, позволяющие легко получить готовые для отправки POST запросом данные из вашей формы, или получить массив всех её данных.
Для этого можно один раз найти вменяемую реализацию где-нибудь на StackOverflow и использовать потом везде. Например, serialize.
В этом ведь и дело: зачем париться с установкой другой ajax библиотеки и написанием своих реализаций того, что уже реализовано и протестировано?) Совсем не спорю насчёт CSS3, и я даже делаю так в большинстве случаев. Но иногда хочется сделать всё быстро и просто, и в эти моменты slideToggle и fadeToggle спасают)
Спасибо за ваше сообщение в любом случае, особенно про closest: не знал про него)
зачем париться с установкой другой ajax библиотеки
Ну, например для того, чтобы отказаться от jQuery полностью в пользу чистого JS. Поддержка браузерами сейчас очень хорошая, а для особых случаев почти всегда можно полифилл найти)
Тут знаний не хватает. А documentFragment так не работает?
Почитал про documentFragment здесь. Конкретно эта штука работает по-другому, как я понял, но там есть указание на метод insertAdjacentHTML. Который мог бы помочь, но он тоже не заставляет исполняться скрипты, только что проверил)
Я просто таким образом многие сайты написал, у меня есть свой маленький компонент ajax навигации по страницам сайта. И вот там как раз эта особенность jQuery и проявила себя: чтобы скрипты в новом html коде "исполнялись", приходится использовать метод из jQuery, ибо по-другому оно не работает. Интернет полон предложениями решения этой проблемы, вот, например. Ну а я просто решил использовать jQuery, ибо он из коробки эту проблему решает.
С *** сложновато, да.
Что-то подобное можно
для остальных есть полифилл
Для этого есть библиотека
Тут знаний не хватает. А **** не работает?
Для этого можно один раз найти вменяемую реализацию где-нибудь на StackOverflow и использовать потом везде. Например, ***.
Зачем? Есть уже jQuery. Он стандарт «де факто». Он понятен. Он распространен (+ CDN/кэш). Он лаконичен.
А что делать с Вашими «это отсюда, это оттуда, здесь я сам накостылял, тут не работает»? Как потом коллегам в глаза смотреть? Нет, забывать корни не стоит и не стоит сравнивать знание js и jquery. Но и тиражировать велосипеды тоже не надо.
Нормально коллегам в глаза смотреть, если постепенно код рефакторить и не плодить костыли.
Я понимаю, что в каждой разработке можно найти фатальный недостаток, но нужны какие-то экономико-технические показатели для смены библиотеки.
Что значит «за чей счёт»? Идеального кода не существует, поэтому есть необходимость его постепенно улучшать. И фатальные недостатки тут ни при чем, к тому же я говорил не о смене библиотеки, а об отказе от jQuery конкретно, что обусловит меньший размер итогового подключаемого на странице файла как минимум.
Какие другие библиотеки и на сколько они снизят нагрузку?
Я тоже люблю когда всё по-минимуму грузится, но зайдите на любой крупный сайт, юлмарт например, да тот же хабр, посмотрите сколько там картинок, взгляните сколько там маркетингового
Почему мы все должны сегодня же выкинуть jQuery?
Чисто для дополнительного расширения кругозора: нашёл тут сейчас набор рекомендаций о том, как обойтись без жиквери ))
Хм, это мой gist)
Из ваших гистов, кстати, больше всего нам понравились миксины для джейда для компиляции кода в blade шаблоны. Используем с большим удовольствием, своих миксинов потом понаписали вдобавок. И добавили возможность указывать вложенные массивы данных при передаче данных из миксина в blade шаблон.
Нападки на jquery мне напомнили одну историю, непосредственно касающуюся данной статьи. В былые времена людей, которые для верстки пользовались table, побивали камнями во всех публичных местах. Потому что они выравнивали к низу вот таким образом:
<table>
<tr>
<td style="vertical-align:bottom">
Прижато книзу
</td>
...
</tr>
</table>
Теперь самый распространенный прием выравнивания к низу (не бутстраповский) такой:
<div style="display:table; table-layout:fixed; height:100%; width:100%">
<div style="display:table-cell; height:100%; vertical-align:bottom">
Прижато книзу
</div>
...
</div>
Те же яйца — только в профиль и более пасхальные!
Даже несмотря на большой прогресс браузеров последних лет, ванильная работа с домом все равно громоздка и неудобна. Во-первых, тупо длинее. Во-вторых, всплывает куча мелких нюансов, которые надо учитывать.
Даже используя современный фреймворк, я все равно подключаю библиотеку для вспомогательных действий с домом, потому что иначе я начинаю медленно, но верно тонуть в лапше (правда, это не jQuery, а аналог полегче).
И плагины написаны не только в бородатые годы, но и продолжают развиваться сейчас (та же карусель Slick живее всех живых).
Плеваться от jQuery — это просто хипстерская мода.
Используйте новую 4-ую версию фреймворка Bootstrap, в котором используется flex, и проблем с вертикальным выравниваем нет.
Выравнивание в Bootstrap