В CDNJS помещается пакет jquery.slim. Имеет меньший размер. Какие основные отличия от оригинала? Быстрый просмотр кода не дал ответа, а в https://jquery.com я не нашел упоминания о пакете slim.

Итак, в чем разница между jquery.js и jquery.slim.js?

SynCap

Ответов: 8

Ответы (8)

Глядя на код, я обнаружил следующие различия между jquery.js и jquery.slim.js:

In the jquery.slim.js, the following features are removed:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Присоединяем кучу функций для обработки общих событий AJAX
  4. jQuery.expr.filters.animated
  5. настройки ajax, такие как jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. парсинг xml, например jQuery.parseXML,
  7. эффекты анимации, такие как jQuery.easing, jQuery.Animation, jQuery.speed

На данный момент наиболее авторитетным ответом, по-видимому, является этот вопрос, в котором говорится: «Это настраиваемая сборка jQuery, исключающая эффекты, ajax и устаревший код». Подробности будут объявлены с jQuery 3.0.

Я подозреваю, что причиной исключения этих компонентов библиотеки jQuery является признание все более распространенного сценария использования jQuery в сочетании с другим фреймворком JS, таким как Angular или React. В этих случаях использование jQuery в основном предназначено для обхода и обработки DOM, поэтому исключение тех компонентов, которые либо устарели, либо предоставлены фреймворком, дает уменьшение размера файла примерно на 20%.

Я мог видеть $. Ajax удален из jQuery slim 3.2.1

Из jQuery docs

Вы также можете использовать тонкую сборку, которая исключает модули ajax и эффектов

Ниже комментарий из тонкой версии с удаленными функциями

/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */

Как уже отмечалось, Ajax и модули эффектов были исключены из jQuery slim, разница в размерах по состоянию на 3.3.1 для минифицированной разархивированной версии составляет 85k против 69k (сохранение 16k для slim) или 30vs24 для zip, важно отметить, чтоbootstrap 4 использует тонкий jQuery, поэтому, если кому-то нужна полная версия, ему нужно вместо этого назвать это

Я обнаружил разницу при создании контакта формы: slim (рекомендуется boostrap 4.5):

  • После отправки электронного письма глобальные переменные застревают, и если пользователь дает f5 (перезагрузить страницу), оно отправляется снова. мин.:
  • Предыдущая ошибка будет решена. как я страдал!

Блог jQuery, Выпущен jQuery 3.1.1!, говорит:

Тонкая сборка

Иногда вам не нужен ajax, или вы предпочитаете использовать одну из многих автономных библиотек, ориентированных на запросы ajax. И часто проще использовать комбинацию CSS и манипуляции с классами для всей вашей веб-анимации. Наряду с обычной версией jQuery, которая включает в себя модули ajax и эффектов, мы выпустили «тонкую» версию, в которой эти модули исключены. В общем, он исключает ajax, эффекты и устаревший код. Размер jQuery в наши дни очень редко влияет на производительность загрузки, но тонкая сборка примерно на 6 КБ байтов, сжатых с помощью gzip, меньше, чем обычная версия - 23,6 КБ против 30 КБ.

Когда я хотел использовать jQuery UI, была большая разница. В тонкой версии jQuery это невозможно. Фактически, тонкая версия исключает модули ajax и эффектов

Краткий ответ из объявления о финальной версии jQuery 3.0:

Наряду с обычной версией jQuery, которая включает модули ajax и эффектов, мы выпускаем «тонкую» версию, исключающую эти модули. В общем, он исключает ajax, эффекты и устаревший код.

Размер файла (gzip) примерно на 6 КБ меньше, 23,6 КБ против 30 КБ.

2022 WebDevInsider