Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. jQuery 4.0: модульность и отказ от устаревшего кода

jQuery 4.0: модульность и отказ от устаревшего кода

Запланировано Прикреплена Закрыта Перенесена JavaScript
jqueryjavascriptмодули
1 Сообщения 1 Постеры 55 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал в отредактировано
    #1

    После почти десяти лет ожидания вышла 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 лет назад.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы