Почему эта зрелая библиотека JavaScript по-прежнему популярна как никогда!

В постоянно меняющемся ландшафте JavaScript-библиотек, фреймворков и других виджетов пользовательского интерфейса ничто не вызывает больше споров среди разработчиков, чем jQuery.
Это стало не чем иным, как религиозной инквизицией среди горстки фанатиков в технологическом сообществе. На самом деле, появились целые веб-сайты (на самом деле самовозвеличивающие блоги), показывающие, как избавиться от jQuery и вместо этого просто написать простой «ванильный JavaScript».
Нравится вам это или нет, но jQuery — одна из тех исключительных библиотек, которая существует дольше, чем многие, если не большинство из нас, кодируют.
Первоначально созданный Джоном Резигом в 2006 году, jQuery был основан на работе библиотеки cssQuery Дина Эдварда. Прелесть jQuery заключалась в использовании механизма селекторов Sizzle, который позволял почти без усилий выбирать или «запрашивать» DOM с помощью селекторов, подобных CSS.
Еще в 2006 году JavaScript в основном был доменом jScript от Microsoft в Internet Explorer, а тогдашний конкурирующий ECMAScript продвигался Netscape и другими поставщиками браузеров в поисках более основанной на стандартах реализации языка сценариев DOM.
Любой, кто был жив и кодировал на Диком Западе во времена «Войн браузеров», слишком хорошо помнит, как пытался кодировать различные варианты синтаксиса между jScript и ECMAScript, не говоря уже о различиях в том, как механизмы рендеринга различных браузеров рисовали страницу. .
И у jScript, и у ECMAScript были хорошие и не очень хорошие идеи о том, как должна быть реализована очередь DOM, но Sizzle сделал jQuery просто чертовски простым, независимо от того, какой браузер вы используете. Но запросы к DOM были только началом того, что jQuery мог делать в кроссбраузерном режиме.
jQuery была одной из первых очень полезных библиотек, которая быстро смягчила, стандартизировала, так сказать, многие резкие различия в том, как браузеры получают доступ к DOM и манипулируют им.
На самом деле, ES5 в значительной степени заимствовал самые популярные функции jQuery, такие как включение функций querySelector и querySelectorAll в 2013 году, спустя много времени после того, как jQuery реализовал эти очень мощные функции с самого первого дня.
Религиозный опыт
Мне не нужно объяснять более опытным разработчикам, насколько невероятно полезным был jQuery для всех 10–15 лет назад. jQuery привнес в JavaScript крайне необходимую «нормализацию», которую производители браузеров просто отказывались реализовывать в своих битвах друг с другом, пытаясь выработать какой-то вездесущий стандарт, на который все мы отчаянно надеялись.
Многие, если не большинство из вас помнят дни, всего 10 лет назад, когда мы писали код пользовательского интерфейса, который должен был «постепенно улучшать» или «изящно ухудшать» внешний вид пользовательского интерфейса в зависимости от того, какие функции были (или не были) доступны в ДОМ. Сказать, что это был бардак, было бы преуменьшением. Эта несовместимость между клиентами и тестированием буквально увеличила время разработки на 20-30%.
jQuery во многом устранил эту несовместимость.
Внезапно с включением jQuery мы смогли получить доступ к DOM и BOM, используя общеизвестный стандарт с открытым исходным кодом; тот, который был хорошо задокументирован; и, черт возьми, это просто работало независимо от того, в каком браузере вы кодировали.
jQuery предлагал крайне необходимый уровень абстракции, который смягчал бессмыслицу Microsoft jScript и других проприетарных функций IE и предоставлял всем более равные условия игры.
Внезапно все стали более или менее говорить на одном языке — или, скорее, на синтаксисе.
Более приятный и простой синтаксис
«Подслащенный синтаксис» jQuery также был находкой. Подобно тому, как сейчас это делают серверные фреймворки, такие как Laravel, например, jQuery предлагал оптимизированный набор функций с помощью укороченного синтаксиса, который позволял не только запрашивать DOM, но и манипулировать и анимировать с использованием чистого JS.
Даже в современных браузерах jQuery позволяет вам делать что-то быстрее и проще, чем с vanilla JS.
Давайте рассмотрим простой пример, например включение и выключение класса.
В jQuery это выглядит так:
$('.toggle-me').on( 'click', function() {
$(this).toggleClass('active');
});
В так называемом «ванильном JS» (это просто другой способ сказать «простой JavaScript») тот же код немного сложнее:
var el = document.querySelector('.toggle-me');
el.onclick = function() {
el.classList.toggle('active');
}
или теперь в ES6 вы можете написать это, используя функцию стрелки, как:
const el = document.querySelector('.toggle-me');
el.onclick = () => el.classList.toggle('active');
Честно говоря, я не очень разбираюсь в синтаксисе новых стрелочных функций, но неважно. Наверное, некоторым людям не нравится писать слово «функция»? Это начинает выглядеть так, как будто какая-то ерунда TypeScript проникла в стандарт ES6, но я отвлекся…
Священная война начинается
Отталкивание от jQuery, похоже, началось там, где зародилась большая часть всех технических споров — в священных залах больших технологий, а именно в нечестивой троице причудливых технологий: Google, Facebook и их преданных епископах в академических кругах.
По иронии судьбы, на этот раз группа еретиков — это люди из Microsoft, которые до сих пор включают jQuery в свои различные дистрибутивы. Опять же, Microsoft не привыкать к техническому святотатству, так что я не особо удивлен.
Дело в том, что если Big Tech не контролирует что-то, в данном случае JavaScript, это внезапно становится анафемой для Святого Престола ECMA, и вы еретик даже за то, что соизволили использовать такую отступническую библиотеку в своем коде! Вы будете прокляты к черту их идеологизированными армиями верных инквизиторов даже за то, что вы упомянули слово на букву «J», богохульник!
Но пока продолжается инквизиция jQuery Церковью больших технологий, факты неопровержимы:
jQuery популярнее, чем когда-либо!
По данным W3Techs,
«jQuery используется на 95,4% всех веб-сайтов, чьи библиотеки JavaScript нам известны. Это 78,5% всех веб-сайтов».
Ждать. Что?! Разве «jQueryizers» не были отлучены от церкви, а их приверженность использованию такого непочтительного кода не была разослана «церковной» пропагандой!?
Не совсем.
Несмотря на всю шумиху, демонизацию, проповеди со стороны, казалось бы, бесконечного парада верных помощников Big Tech, демонстративное незаконнорожденное дитя всех библиотек JavaScript было и останется — более популярным, чем когда-либо!
Но, слушая различных технических блоггеров, вы можете подумать, что jQuery почти мертв. Никто даже серьезно не использует jQuery, верно?
Неправильный. Мертвая ошибка.
Неоспоримым фактом является то, что почти ВСЕ, кто пишет JavaScript во всем мире, используют jQuery, за исключением горстки чрезмерно громких религиозных пуристов. Это нормально, у меня нет проблем с vanilla JS. Выбейте себя. jQuery полностью совместим с простым ванильным JS, потому что под капотом все, чем является jQuery, простой ванильный JS, который помогает вам делать вещи проще, лучше, быстрее и с меньшим количеством кода.
Итак, просто из любопытства, я также обратился к оракулу в W3Techs: «Сколько веб-сайтов используют самый священный фреймворк из всех — Angular?»
«Angular используется на 0,4% всех веб-сайтов, чьи библиотеки JavaScript нам известны. Это 0,4% всех веб-сайтов».
А как же Реакт?
«React используется на 3,0% всех веб-сайтов, чьи библиотеки JavaScript нам известны. Это 2,5% всех сайтов».
Но разве все мы не думали, что Angular и React были благословенным неопровержимым краеугольным камнем всех JavaScript-фреймворков? Что без хотя бы одного из священных фреймворков, на которых работают ваши веб-сайты, вы не сможете должным образом организовать свой код корпоративного класса? Как люди вообще пишут веб-сайты без благословения самого священного кодекса Церкви больших технологий?!
Почему пришло время убить Angular
Мы в технологическом сообществе были обмануты, обмануты горсткой ловких маркетологов, осмелюсь сказать, «влиятельных людей», как на свободных рынках, так и в академических кругах, заставив поверить и повторять то, что просто предназначено для служения Церкви больших технологий, и никто другой.
Еще в августе этого года я написал статью под названием Angular обходится компаниям в миллиарды — почему пришло время убить Angular, и меня поджарили послушно верные идеологи «Церкви» со всевозможными нелепыми оправданиями. [начинает плаксивым голосом] почему нам действительно нужен Angular, и что без организации кода Angular и Библии о том, как правильно писать JavaScript, никто не сможет писать веб-сайты!! [конец плаксивого голоса]
Серьезно? Людям нужно взрослеть. Как опытные технологи, мы писали хорошо организованный код корпоративного класса для веб-сайтов, используя jQuery и другие действительно замечательные библиотеки, такие как DataTables, задолго до того, как появились Angular и React. И мы все еще делаем это — без догм Церкви больших технологий, которые мешают нам.
Интересно, что моя вышеприведенная статья об Angular набрала более 150 000 просмотров на Medium и почти 80 000 прочтений; коэффициент прочитанности 53%, что безумно много для статьи такого размера на Medium. Статья также собрала более 2500 поклонников и более 11 000 аплодисментов от инженеров и разработчиков, которые, как и я, знают свое дело и знают дерьмовый код и нелепое раздувание, когда они его видят.
Я также получил несколько личных электронных писем от поклонников статьи, в которых они благодарили меня за то, что у меня хватило духу встать и заявить о том, о чем многие из нас думали годами, а именно о том, что эти смехотворно раздутые фреймворки на самом деле не помогают больше, чем мешают развитию. Они буквально обходятся компаниям в миллиарды с точки зрения дополнительных расходов на обслуживание и в конечном итоге вырываются, как только хоть немного здравого смысла возвращается к этому крошечному, но шумному сегменту, который все еще пишет эту чушь.
Будущее jQuery
ПРИЧИНА jQuery выросла до таких заоблачных высот с точки зрения использования разработчиками во всем мире, потому что она была и остается действительно полезной библиотекой, которая действительно оптимизирует код, не добавляя раздувания и другой ерунды в кодовую базу.
Некоторые из главных причин продолжать использовать jQuery:
- Это способствует простоте кода. Пословица «Делай больше. Пиши меньше». все еще жив и здоров в jQuery.
- Он легкий и не требует загрузки всего фреймворка. Страницы загружаются намного быстрее, чем любой фреймворк.
- Это SEO-дружественно. Вам не нужно заниматься SEO-гимнастикой, чтобы заставить поисковые роботы правильно очищать ваши SPA-страницы.
- Он полностью расширяемый. Он работает так, как должен работать JavaScript, без необходимости компилировать, как это делают CoffeeScript или TypeScript.
- Анимация и другие служебные функции, встроенные в jQuery, значительно экономят время.
- Наконец, вы можете легко писать шаблонный код DOM с помощью jQuery без необходимости в раздутом фреймворке или даже в другой библиотеке, такой как Handlebars.
Популярность jQuery не произошла в одночасье; это произошло органически. Это произошло потому, что это было действительно полезно. И это произошло без того, чтобы Церковь больших технологий распространяла свое чудовищное евангелие раздутых фреймворков среди ничего не подозревающего населения.
Теперь компаниям придется тратить всевозможные с трудом заработанные деньги, чтобы избавиться от этой ерунды и вернуться к написанию приложений с чистым, простым, многократно используемым, расширяемым кодом, который не требует целой сети университетов, влиятельных лиц и маркетинга, чтобы привлечь людей. использовать его.
Если вы — компания, которая не использует Angular, React или какую-то другую скомпилированную мешанину для запуска своего пользовательского интерфейса, поздравляю, вы обошли дорогостоящее фиктивное евангелие, проповедуемое Церковью больших технологий.
____________________
Бо Бошам – архитектор веб-приложений с более чем 20-летним опытом разработки приложений корпоративного класса в облаке. он является основателем WebTigers и ведущим разработчиком Tiger Platform.
Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.