Найти в Дзене
Chris Roylance

Состоялся релиз jQuery 4.0.0

14 января 2006 года Джон Резиг представил библиотеку JavaScript под названием jQuery на конференции BarCamp в Нью-Йорке. Теперь, 20 лет спустя, команда jQuery рада объявить о финальном релизе jQuery 4.0.0. После длительного цикла разработки и нескольких предварительных релизов, jQuery 4.0.0 приносит множество улучшений и модернизаций. Это первый крупный релиз почти за 10 лет, и он включает в себя некоторые изменения, нарушающие обратную совместимость, поэтому обязательно ознакомьтесь с подробностями ниже, прежде чем обновляться. Тем не менее, мы ожидаем, что большинство пользователей смогут обновиться с минимальными изменениями в своем коде. Многие из критических изменений команда хотела внести годами, но не могла сделать это в рамках патча или минорного релиза. Мы сократили устаревший код, удалили некоторые ранее устаревшие API, убрали некоторые внутренние параметры из публичных функций, которые никогда не были задокументированы, и прекратили поддержку некоторых «магических» функций,
Оглавление

14 января 2006 года Джон Резиг представил библиотеку JavaScript под названием jQuery на конференции BarCamp в Нью-Йорке. Теперь, 20 лет спустя, команда jQuery рада объявить о финальном релизе jQuery 4.0.0. После длительного цикла разработки и нескольких предварительных релизов, jQuery 4.0.0 приносит множество улучшений и модернизаций. Это первый крупный релиз почти за 10 лет, и он включает в себя некоторые изменения, нарушающие обратную совместимость, поэтому обязательно ознакомьтесь с подробностями ниже, прежде чем обновляться. Тем не менее, мы ожидаем, что большинство пользователей смогут обновиться с минимальными изменениями в своем коде.

Многие из критических изменений команда хотела внести годами, но не могла сделать это в рамках патча или минорного релиза. Мы сократили устаревший код, удалили некоторые ранее устаревшие API, убрали некоторые внутренние параметры из публичных функций, которые никогда не были задокументированы, и прекратили поддержку некоторых «магических» функций, которые были слишком сложными.

У нас есть руководство по обновлению и релиз плагина jQuery Migrate, которые помогут вам с переходом. Пожалуйста, обновитесь и сообщите нам, если у вас возникнут какие-либо проблемы.

Как обычно, релиз доступен на нашем CDN и в менеджере пакетов npm. Вероятно, он скоро появится и на других сторонних CDN, но помните, что мы не контролируем их графики релизов, и им потребуется некоторое время. Вот основные моменты jQuery 4.0.0.

Поддержка IE<11 удалена

В jQuery 4.0 прекращена поддержка Internet Explorer 10 и более старых версий. Некоторые могут спросить, почему мы не удалили поддержку IE 11. Мы планируем удалять поддержку поэтапно, и следующий шаг будет реализован в jQuery 5.0. А пока начнём с удаления кода, специально поддерживающего версии IE старше 11.

Мы также прекратили поддержку других очень старых браузеров, включая Edge Legacy, версии iOS младше последних трех, версии Firefox младше последних двух (за исключением Firefox ESR) и браузер Android. Никаких изменений с вашей стороны не потребуется. Если вам необходимо поддерживать какой-либо из этих браузеров, используйте jQuery 3.x.

Доверенные типы и CSP

jQuery 4.0 добавляет поддержку доверенных типов, гарантируя, что HTML, обернутый в TrustedHTML, может использоваться в качестве входных данных для методов манипулирования jQuery таким образом, чтобы это не нарушало директиву require-trusted-types-for Content Security Policy.

Кроме того, хотя в некоторых AJAX-запросах уже использовались теги <script> для сохранения таких атрибутов, как crossdomain, мы перевели большинство асинхронных запросов на использование скриптов на использование тегов <script>, чтобы избежать ошибок CSP, вызванных использованием встроенных скриптов. В некоторых случаях XHR по-прежнему используется для асинхронных запросов на использование скриптов, например, когда передается опция "headers" (используйте scriptAttrs вместо этого!), но теперь мы используем тег <script> везде, где это возможно.

Перенос исходного кода jQuery на модули ES

Это был особенный день, когда исходный код jQuery в основной ветке был перенесен с AMD на модули ES. Исходный код jQuery всегда публиковался вместе с релизами jQuery на npm и GitHub, но его нельзя было импортировать напрямую как модули без RequireJS, который был предпочтительным инструментом сборки jQuery. С тех пор мы перешли на Rollup для упаковки jQuery и запускаем все тесты для модулей ES отдельно. Это делает jQuery совместимым с современными инструментами сборки, рабочими процессами разработки и браузерами благодаря использованию <script type=module>.

Удалены устаревшие API

Эти функции были объявлены устаревшими несколько версий назад. Пришло время удалить их сейчас, когда мы достигли крупного релиза. Эти функции либо всегда предназначались для внутреннего использования, либо теперь имеют собственные аналоги во всех поддерживаемых браузерах. Удалены следующие функции:

jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps и jQuery.fx.interval.

Вместо этого используйте нативные аналоги, такие как Array.isArray(), JSON.parse(), String.prototype.trim() и Date.now().

Удаление устаревших API в сочетании с удалением кода, поддерживающего старые версии Internet Explorer, привело к уменьшению размера файла в сжатом виде более чем на 3 КБ.

Методы, предназначенные только для внутреннего использования, удалены из прототипа jQuery.

В прототипе jQuery долгое время присутствовали методы для работы с массивами, которые вели себя иначе, чем другие методы jQuery, и всегда предназначались только для внутреннего использования. К таким методам относятся push, sort и splice. Теперь они удалены из прототипа jQuery. Если вы использовали эти методы, `$elems.push( elem )` можно заменить на `[].push.call( $elems, elem )`.

Порядок событий focus теперь соответствует спецификации W3C.

Долгое время браузеры не могли прийти к единому мнению относительно порядка событий focus и blur, который включает focusin, focusout, focus и blur. Наконец, последние версии всех браузеров, поддерживаемых jQuery 4.0, пришли к общему порядку событий. К сожалению, он отличается от согласованного порядка, который jQuery выбирал много лет назад, что делает это изменение критическим. По крайней мере, теперь все на одной волне!

Начиная с jQuery 4.0, мы больше не переопределяем нативное поведение. Это означает, что все браузеры, кроме IE, будут следовать текущей спецификации W3C, которая выглядит следующим образом:

  • blur
  • focusout
  • focus
  • focusin

Порядок событий в предыдущих версиях jQuery был: focusout, blur, focusin, focus. По иронии судьбы, единственным браузером, который когда-либо следовал старой спецификации W3C (до ее обновления в 2023 году), был Internet Explorer.

Обновленная версия в уменьшенном размере

В jQuery 4.0.0 уменьшенная версия стала еще меньше благодаря удалению Deferred и Callback (теперь около 19,5 тыс. байт в сжатом виде!). Deferred давно поддерживают стандарт Promises A+, поэтому в большинстве случаев вместо них можно использовать нативные Promises, и они доступны во всех браузерах, поддерживаемых jQuery, кроме IE11. У Deferred есть некоторые дополнительные функции, которые не поддерживаются нативными Promises, но большую часть их использования можно перенести на методы Promise. Если вам необходимо поддерживать IE11, лучше использовать основную версию или добавить полифил для нативных Promises.

Скачать

Вы можете получить файлы с CDN jQuery или перейти по прямой ссылке:

https://code.jquery.com/jquery-4.0.0.js

https://code.jquery.com/jquery-4.0.0.min.js

Вы также можете получить этот релиз из npm:

npm install jquery@4.0.0

Упрощенная версия

Иногда Ajax не нужен, или вы предпочитаете использовать одну из множества отдельных библиотек, ориентированных на Ajax-запросы. И часто проще использовать комбинацию CSS и манипуляций с классами для веб-анимации. Наконец, все поддерживаемые jQuery браузеры (кроме IE11) теперь поддерживают нативные Promises, поэтому Deferred и Callbacks в большинстве случаев больше не нужны. Наряду с обычной версией jQuery, которая включает в себя все необходимое, мы выпустили «упрощенную» версию, которая исключает эти модули. Размер jQuery сегодня очень редко является проблемой производительности загрузки, но упрощенная версия примерно на 8 КБ в сжатом виде меньше, чем обычная версия. Эти файлы также доступны в пакете npm и на CDN:

https://code.jquery.com/jquery-4.0.0.slim.js

https://code.jquery.com/jquery-4.0.0.slim.min.js

Эти обновления уже доступны в виде текущих версий на npm и Bower. Информация обо всех способах получения jQuery доступна по адресу https://jquery.com/download/. Публичные CDN-серверы получают свои копии сегодня, пожалуйста, дайте им несколько дней на размещение файлов. Если вы хотите начать работу как можно быстрее, используйте файлы с нашего CDN, пока у них не появится возможность обновиться.

Перевод новости JQuery 4.0.0