<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[jQuery 4.0: модули ES и первое обновление за 10 лет]]></title><description><![CDATA[<p dir="auto"><img src="/assets/uploads/files/ed/1f/06/1773751921196-generated_1773751866235-resized.webp" alt="Обложка: jQuery 4.0: модульная архитектура и первое обновление за 10 лет" class=" img-fluid img-markdown" /></p>
<p dir="auto">После почти десяти лет ожидания вышла jQuery 4.0 - первое крупное обновление библиотеки со времён версии 3.0. Это не просто косметический релиз, а серьёзная модернизация, которая приводит jQuery в соответствие с современным состоянием веб-разработки. Библиотека избавилась от накопившегося legacy-кода, перешла на ES Modules и укрепила безопасность.</p>
<p dir="auto">Для многих разработчиков jQuery остаётся важным инструментом, несмотря на популярность фреймворков вроде React и Vue. Обновление затронет способ, как вы импортируете библиотеку, какие API доступны, и как она работает в современных сборщиках. Давайте разберёмся, что изменилось и зачем это нужно.</p>
<h2>ES Modules вместо AMD: в ногу со временем</h2>
<p dir="auto">Одно из самых значимых изменений - полный переход jQuery на ES Modules (ESM). Раньше исходный код использовал AMD-модули, что создавало проблемы при работе с современными сборщиками вроде Vite, webpack и Rollup. Приходилось применять обходные пути и дополнительные плагины.</p>
<p dir="auto">Теперь jQuery поставляется как полноценный ESM-модуль, что означает <strong>прямую интеграцию с современными build pipeline’ами без лишних танцев</strong>. Вы просто импортируете jQuery стандартным синтаксисом, и сборщик понимает её структуру на лету.</p>
<p dir="auto">Что это даёт на практике:</p>
<ul>
<li><strong>Стандартный синтаксис импорта</strong> - вместо <code>require()</code> или AMD используешь <code>import jQuery from 'jquery'</code></li>
<li><strong>Лучшая оптимизация через tree-shaking</strong> - сборщики видят явную структуру модулей и удаляют неиспользуемый код</li>
<li><strong>Совместимость с <code>&lt;script type="module"</code></strong> - можешь использовать jQuery прямо в браузерных модулях без обработки</li>
<li><strong>Прямая работа с Vite и webpack</strong> - нет необходимости в дополнительных плагинах</li>
</ul>
<p dir="auto">Это особенно полезно для тех, кто работает с современным стеком: куда проще собирать бандл, когда все зависимости говорят на одном языке модулей.</p>
<h2>Удаление устаревшего кода и сокращение размера</h2>
<p dir="auto">Вторая сторона модернизации - это <strong>избавление от API, которые дублируют встроенные браузерные функции</strong>. jQuery удалила методы, которые когда-то были необходимы для кроссбраузерности, но теперь вызывают только путаницу.</p>
<p dir="auto">Вот что было удалено и почему это имеет смысл. Методы вроде <code>jQuery.isArray()</code>, <code>jQuery.trim()</code>, <code>jQuery.now()</code> и <code>jQuery.parseJSON()</code> имеют прямые аналоги в современном JavaScript. Зачем держать обёртку, если можно использовать <code>Array.isArray()</code>, <code>String.trim()</code> или <code>JSON.parse()</code> напрямую? Это только добавляет кода при загрузке страницы.</p>
<p dir="auto">Удалены и внутренние компоненты, связанные с CSS и манипуляциями массивов. Из прототипа jQuery убрали недокументированные методы <code>push</code>, <code>sort</code> и <code>splice</code>. Это действительно никто не использовал в production-коде - это были внутренние детали реализации.</p>
<p dir="auto">Результат измеримый:</p>
<ul>
<li><strong>Slim-версия</strong> сократилась до 19.5 КБ (вместо 27 КБ раньше)</li>
<li><strong>Полная версия</strong> теперь весит 27.5 КБ</li>
<li><strong>Экономия на сжатии gzip</strong> составила примерно 3 КБ</li>
</ul>
<p dir="auto">Для мобильных проектов и критичных по производительности приложений это заметное улучшение. Особенно если учесть, что slim-версия стала ещё меньше благодаря удалению модулей Deferred и Callbacks - теперь она рекомендует использовать нативные Promises.</p>
<h2>Безопасность: Trusted Types и CSP</h2>
<p dir="auto">В jQuery 4.0 добавлена поддержка <strong>Trusted Types</strong> - современного браузерного API для защиты от XSS-атак через DOM-манипуляции. Это критично, когда вы работаете со строгими CSP-политиками (Content Security Policy).</p>
<p dir="auto">Теперь в методы jQuery можно передавать HTML в форме объектов TrustedHTML. Браузер будет знать, что контент безопасен, и не будет блокировать его при жёсткой CSP. Кроме того, большинство асинхронных загрузок скриптов используют динамически создаваемые <code>&lt;script&gt;</code> элементы вместо встроенных скриптов - это тоже снижает риск.</p>
<p dir="auto">Что улучшилось в области безопасности:</p>
<ul>
<li><strong>Совместимость с жёсткой Content Security Policy</strong> - можешь использовать jQuery, не ослабляя CSP-настройки</li>
<li><strong>Защита от DOM XSS</strong> - Trusted Types предотвращают случайное внедрение вредоноса</li>
<li><strong>Валидация передаваемого контента</strong> - jQuery проверяет безопасность HTML перед вставкой</li>
<li><strong>Стандартизированный порядок событий focus/blur</strong> - теперь соответствует спецификации W3C, что исключает неожиданное поведение</li>
</ul>
<p dir="auto">Это особенно важно для enterprise-приложений, где безопасность - не опция, а требование.</p>
<h2>Изменения браузерной поддержки</h2>
<p dir="auto">jQuery 4.0 прекращает поддержку <strong>IE 10 и ниже</strong>, а также старых версий Edge Legacy и очень старых мобильных браузеров (старые iOS/Android Browser). IE 11 ещё поддерживается, но это вероятно последняя версия, которая его содержит.</p>
<p dir="auto">Это логичный шаг - браузеры, которые jQuery больше не поддерживает, давно вышли из общего пользования. Если ваш проект всё ещё должен работать с IE 10, jQuery 4.0 вам не подходит, и нужно остаться на версии 3.x.</p>
<p dir="auto">Для остального контингента разработчиков это значит:</p>
<ul>
<li>Меньше полифилов и обходных путей в коде</li>
<li>Более чистый и понятный исходник библиотеки</li>
<li>Быстрее выполняется и меньше весит</li>
</ul>
<h2>Практический чек-лист при обновлении</h2>
<p dir="auto">Если вы решили перейти на jQuery 4.0, разработчики обещают, что <strong>большинство проектов обновятся с минимальными изменениями</strong>. Вот как это сделать правильно.</p>
<p dir="auto">Первый шаг - обновить саму jQuery до версии 4.0.0. Но прежде чем менять весь код, подключите <strong>jQuery Migrate 4.x</strong> в dev-версии. Это специальный плагин, который выдаст предупреждения в консоли <code>JQMIGRATE</code> - покажет, какие устаревшие API вы используете.</p>
<p dir="auto">Что нужно проверить после обновления:</p>
<ul>
<li><strong>CSS и единицы измерения</strong> - jQuery больше не добавляет <code>px</code> автоматически, пишите явно: вместо <code>.css('width', 100)</code> используйте <code>.css('width', '100px')</code></li>
<li><strong>Ajax-запросы</strong> - поведение может измениться, проверьте критичные запросы</li>
<li><strong>Формы и валидация</strong> - порядок событий может отличаться</li>
<li><strong>Дефолтное поведение</strong> - jQuery перестала переопределять некоторые поведения браузера</li>
</ul>
<p dir="auto">Для сложных проектов может потребоваться ручное тестирование. Для простых сайтов обновление обычно проходит без проблем.</p>
<h2>На чём сосредоточиться дальше</h2>
<p dir="auto">jQuery 4.0 - это вехотка на пути модернизации библиотеки, но она не решает всех вопросов веб-разработки. Например, управление состоянием приложения всё ещё требует дополнительных решений, реактивность остаётся ограниченной по сравнению с фреймворками.</p>
<p dir="auto">Но для проектов, которые уже строятся на jQuery, обновление имеет смысл. Вы получаете более безопасный, легкий и современный инструмент, который лучше интегрируется с текущим экосистемом JavaScript. Остаётся вопрос - нужна ли вам вообще jQuery в новых проектах, или пришла пора переходить на что-то посерьёзнее.</p>
]]></description><link>https://forum.exlends.ru/topic/1697/jquery-4.0-moduli-es-i-pervoe-obnovlenie-za-10-let</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 02:56:00 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1697.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Mar 2026 12:52:01 GMT</pubDate><ttl>60</ttl></channel></rss>