Перестаньте Использовать Jquery, Без Него Вы Сможете Добиться Большего.



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

Вы можете быть удивлены, узнав, что дело не только в ненависти.

Давайте разбираться в ситуации.

Как и многие другие разработчики, я начал использовать jQuery в эпоху позднего бронзового века (2007 г.

), когда различия между браузерами были просто занозой в глазу, а отсутствие общих стандартов было так ненавистно.

jQuery был своего рода источником вдохновения и лучом света в эти темные времена, он был революционным.

Я влюбился в jQuery, как только начал его использовать.

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

Но потом, несколько лет назад, я изменил свое мнение.

Давайте подробнее рассмотрим, что не так с использованием jQuery в современной веб-разработке и как мы можем это исправить.



униформизатор

Одной из удивительных особенностей JQuery была его способность сглаживать, а иногда и компенсировать различия в обработке DOM в разных браузерах и версиях браузеров.

Но давайте посмотрим правде в глаза, с тех пор многое изменилось, появилось множество современных стандартов.

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

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

  
  
  
  
  
   

$('div, span, article'); $('#formId :invalid');

на:

document.querySelectorAll('div, span, article'); document.querySelectorAll('#formId :invalid');

Или, например, утилита типа:

$.

isArray(array1); $.

each(array, function(i, v) { // do something here });

легко заменить на:

Array.isArray(array1); array1.forEach(function(v, i) { // do something here }

Лично я предпочитаю всегда придерживаться стандартов; jQuery — это не стандарт, это просто библиотека.



Объект-оболочка

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

Например, *$('span')* вернет вам такой объект. Мало того, что объект-обертка имеет свои собственные методы, отличающиеся от общепринятых стандартов, это также не гарантирует, что jQuery будет использовать обертки только внутри своих методов.

Это далеко не так: что будет *this* в функции-обработчике событий, или каким будет первый аргумент такой функции или значение ее специального поля *target*? Небольшой пример:

$('button').

bind('click', function(e){ var el = this; // Is it jQuery "object" or not ? Let's see the doc var event = e; // Is it jQuery "object" ? No, it's a special event-wrapper object var target = event.target; // Is it jQuery "object" ? Sure not, it's a simple DOM element });

И так, иногда это обертка, иногда нет, а иногда это особая обертка, что это вообще такое, зачем нам так усложнять себе жизнь? Но есть костыль, скажете вы, а как насчет соглашения, когда все «специальные объекты» jQuery начинаются со знака $? Что-то вроде:

$('button').

bind('click', function(e){ var $el = $(this); var _event = e; // Let's use an another special convention for jQuery's events wrapper, prefix _ var $event = e; // No, we should be coherent var target = $(event.target); // I'm sorry I forgot the dollar, because I'm just a human var target2 = $(target); // Oups, but I have to be sure that it's wrapped var var1 = someFunc(); // I forgot, this function should return $ or simple NodeList $(var1); // Nevermind .

});



JQuery как стандарт веб-разработки

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

Для меня это все брехня, отчасти это было правдой 5 лет назад, но не сейчас.

Это то же самое, что сказать, что для разработки современных приложений для Windows 8/10 необходимо использовать Win32 API в чистом виде.

Как я уже говорил выше, jQuery — это всего лишь библиотека, причём по сегодняшним меркам низкоуровневая библиотека.

А вещи такого рода не подходят для написания современных веб-приложений.

Ничто не мешает вам использовать jQuery или чистый стандарт DOM/API для реализации той или иной низкоуровневой задачи, но написать целое приложение и затем поддерживать его очень сложно.

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

Как этого можно избежать? Используйте решения, которые больше подходят для этого там, где они действительно нужны, будь то МВ* или что-то еще.



Тестирование

Эта часть неразрывно связана с предыдущей.

Как мы все знаем, люди ленивы по своей природе, и хорошие программисты по автоматизации часто ленивы.

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

А если принять во внимание тот факт, что зачастую проекты, использующие jQuery, настолько стремительно набирают вес, что разработчики не успевают, не хотят или не могут реорганизовать свой код. Результат неутешительный, как можно говорить о тестировании, когда даже автор кода не способен понять, что этот код делает. В подходе MV* решить эту проблему гораздо проще.



Нижняя граница

Если вас убедила эта статья и вы хотите попробовать жить и работать без jQuery, вы можете использовать следующие ссылки: Для интересующихся есть английская версия.

статьи .

Теги: #JavaScript #jQuery #JavaScript #jQuery

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.