jQuery 4.0: модульность и отказ от устаревшего кода
-
После почти десяти лет ожидания вышла jQuery 4.0 - крупный релиз, который принес серьезные изменения в популярную JavaScript-библиотеку. Это не просто обновление с новыми функциями, а полная переработка архитектуры с отказом от наследия прошлого. Разработчики удалили много устаревшего кода, переписали исходник на современные стандарты и значительно уменьшили размер библиотеки.
Если вы работаете с jQuery в своих проектах, то обновление стоит рассмотреть серьезно. Хотя команда обещает, что большинство пользователей смогут перейти на новую версию с минимальными изменениями в коде, важно понимать, что произошло под капотом и какие обрывы совместимости могут вас ждать.
Переход на ES Modules: современная упаковка
Одно из самых значительных изменений - jQuery теперь построена на ECMAScript Modules (ESM) вместо AMD-модулей. Это означает, что библиотека наконец-то вступила в 21-й век в плане организации кода. Ранее jQuery использовала AMD (Asynchronous Module Definition) - технологию, которая была актуальна более десяти лет назад, когда веб-стандарты еще не имели собственной системы модулей.
Теперь jQuery работает с современными бандлерами вроде Vite, webpack и Rollup напрямую, без всяких обходных путей. Это особенно полезно, если вы используете ES6-импорты в своем коде и хотите, чтобы jQuery поддерживала тот же стиль. Вместо сложных конфигураций и плагинов можно просто написать обычный импорт.
Перестройка модульной архитектуры позволила разработчикам не только улучшить совместимость с современными инструментами, но и лучше организовать исходный код проекта. Теперь каждый компонент jQuery представляет собой отдельный модуль, что упрощает отладку и позволяет бандлерам эффективнее удалять неиспользуемый код при минификации.
Помимо архитектурных улучшений, переход на ESM принес практическую пользу:
- Полная совместимость с
<script type="module">в HTML без дополнительных обертываний - Лучшая оптимизация при tree-shaking - инструменты сборки могут автоматически удалять неиспользуемые части
- Прямая поддержка современного рабочего процесса разработки без AMD-обертки
- Возможность использовать jQuery как обычный npm-пакет в TypeScript и ES6-проектах
Удаление устаревшего кода: чистота важнее магии
Если вы когда-нибудь использовали методы вроде
jQuery.isArray,jQuery.trimилиjQuery.parseJSON, то вам нужно знать: в jQuery 4.0 их больше нет. Разработчики выполнили долгожданную уборку, удалив более десятка устаревших утилит, которые давно помечались как deprecated.Это решение было мудрым по нескольким причинам. Во-первых, все эти методы имеют встроенные альтернативы в современных браузерах.
Array.isArray()работает везде,String.prototype.trim()- тоже,JSON.parse()- более надежен и быстрее. Держать их в jQuery просто потому, что “вдруг кто-то их использует” - это архаизм, который загромождает код и замедляет разработку.Во-вторых, удаление этого наследия позволило значительно сократить размер библиотеки. Slim-версия jQuery 4.0 занимает всего 19.5 килобайта в gzip-сжатии, а полная версия - 27.5 килобайта. Это на 3 килобайта меньше, чем раньше. Звучит немного? Для мобильных пользователей с медленным интернетом каждый килобайт имеет значение.
Вот полный список удаленных устаревших API:
jQuery.isArray- замена:Array.isArray()jQuery.trim- замена:String.prototype.trim()jQuery.parseJSON- замена:JSON.parse()jQuery.type- замена: встроенные проверки типовjQuery.now- замена:Date.now()jQuery.isNumeric,jQuery.isFunction,jQuery.isWindow- замены в стандартеjQuery.camelCase,jQuery.nodeName,jQuery.cssNumber,jQuery.cssProps,jQuery.fx.interval- вспомогательные методы с альтернативами
Также из прототипа jQuery удалены недокументированные методы
push,sortиsplice, которые делали jQuery объект похожим на массив. Это было частью “магии”, которая усложняла код и создавала путаницу.Завершение поддержки древних браузеров
IE 10 и старше - теперь полностью не поддерживаются. То же касается Edge Legacy (версии до переход на Chromium), очень старых версий iOS Safari и Android Browser. IE 11 остается поддерживаемым в этой версии, но разработчики уже намекают, что это последний большой релиз, где это так. В jQuery 5.0 (который выйдет нескоро, но все равно) IE 11 будет удален окончательно.
Это решение логично и долгожидаемо. Internet Explorer 10 вышел в 2012 году - более 13 лет назад. Даже IE 11 (2013 год) постепенно исчезает из статистики использования. Поддержка этих браузеров требует много специального кода, который замедляет разработку и усложняет приложения.
Отказ от поддержки старых браузеров позволяет jQuery:
- Использовать современные возможности JavaScript нативно, без полифилов
- Убрать условный код для кросс-браузерной совместимости
- Ускорить время выполнения библиотеки
- Сократить общий размер кода и скачиваемых файлов
- Уделить больше внимания современным браузерам и их возможностям
Безопасность: Trusted Types и CSP
В jQuery 4.0 добавлена поддержка Trusted Types - стандарта, который помогает защитить приложение от XSS-атак (межсайтовых скриптов). Теперь методы jQuery могут принимать HTML-код в виде объектов TrustedHTML вместо обычных строк.
Это может показаться замудренным для новичков, но на самом деле это важная защита. Если у вас есть Content Security Policy (CSP) с запретом на встроенные скрипты, jQuery теперь полностью совместима с таким режимом. Разработчики, которые включили жесткую CSP для защиты приложения, больше не будут иметь конфликтов с jQuery.
Это особенно актуально для приложений с высокими требованиями безопасности - финтеха, медицины, государственных сервисов. Они могут спокойно использовать jQuery 4.0 без разрешений на небезопасные операции.
Изменения в событиях и поведении
Порядок событий фокуса (focus, blur, focusin, focusout) теперь соответствует спецификации W3C. Ранее jQuery переопределяла этот порядок для обеспечения кросс-браузерной совместимости - но теперь все браузеры следуют одному стандарту, поэтому этот обходной путь больше не нужен.
Также изменилось поведение в нескольких местах:
- CSS с числами: раньше jQuery автоматически добавляла
pxк числовым значениям. Теперь это не происходит - нужно писать единицы явно:.css("left", "10px")вместо.css("left", 10) - AJAX и JSONP: автоматическое преобразование JSON в JSONP удалено. Если нужен JSONP, нужно явно указать это в настройках
- Slim-версия без анимаций: удалены Deferreds и Callbacks, предполагается использование встроенного Promise
Эти изменения требуют внимания при обновлении, но все они направлены на то, чтобы код был более явным и предсказуемым.
Slim-версия стала еще легче
Для тех, кто использует облегченный вариант jQuery без AJAX и анимаций, хорошая новость: slim-версия 4.0 теперь еще меньше. Из нее удалены Deferreds и Callbacks - компоненты, которые были обходным путем для работы с асинхронными операциями до появления встроенного Promise в JavaScript.
Теперь slim-версия - это просто jQuery с основными функциями DOM-манипуляции. Если вам нужны анимации, Ajax или асинхронность - берите полную версию или используйте нативные Promise. Это стимулирует переход на современный JavaScript и сокращает размер приложений, которые не нуждаются в этих компонентах.
Сравнение версий jQuery 4.0:
Характеристика Slim-версия Полная версия Размер (gzip) 19.5 КБ 27.5 КБ DOM-манипуляция 

Ajax 

Эффекты/анимация 

Deferred/Callbacks 

Как это влияет на ваш проект
Если вы планируете обновление, вот что нужно проверить в первую очередь:
- Использует ли код какие-то из удаленных API типа
jQuery.isArray- нужно заменить на встроенные аналоги - Работаете ли вы с IE 10 или старше - если да, обновление невозможно
- Полагаетесь ли на автоматическое добавление
pxк числовым значениям CSS - может понадобиться правка стилей - Используете ли JSONP - нужно проверить явные настройки в Ajax запросах
- Нужна ли вам slim-версия - если используете анимации, берите полную
Разработчики jQuery подготовили плагин для упрощения миграции, который помогает найти проблемные участки кода автоматически. Во многих случаях переход будет безболезненным - нужны будут только мелкие правки.
О новых возможностях и том, что дальше
Это не совсем новый функционал - jQuery 4.0 сосредоточена на модернизации основания, а не на добавлении фишек. Главная идея: убрать наследие, сделать код чище, быстрее и безопаснее. Разработчики сосредоточились на том, чтобы библиотека хорошо работала с современными инструментами вроде Vite и webpack, а не на новых методах.
Что интересно подумать о будущем: jQuery постепенно становится тоньше прослойкой над современным DOM API, а не мощной абстракцией над ним. Это отражает общий тренд в веб-разработке - браузеры предоставляют больше встроенных функций, и их качество выросла. jQuery остается полезной для совместимости и удобства, но уже не является необходимой для базовой работы с DOM, как это было 10-15 лет назад.
- Полная совместимость с
Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2024 - 2026 ExLends, Inc. Все права защищены.