В чем разница между обычной и тонкой упаковкой jquery?

436

На CDNJS размещен пакет jquery.slim. Он имеет меньший размер. Каковы основные отличия от оригинала? Быстрый просмотр кода не принес ответа, а на jquery.com я не нашел никаких ссылок на slimпакет.

Итак, чем отличаются jquery.js от jquery.slim.js?

SynCap
источник
На мой взгляд, вы приняли посредственный ответ и должны изменить это.
Роберт Симер
@RobertSiemer, может быть, но, на мой взгляд, голоса сотен людей показывают актуальность во времени. Принятый ответ был достаточно полным и своевременным, и теперь все еще дает краткое, быстрое и достаточно эффективное решение.
SynCap
Я полностью не согласен с вами. Голоса по принятым ответам ничего не показывают по сравнению с другими ответами ниже (и вы должны это знать). И какой бы ответ ни был сделан вовремя, он совершенно не имеет значения для общедоступного веб-сайта. Люди приходят сюда сейчас и нуждаются в лучшем ответе. Далее: Bhojendra Rauniyar может полностью обойтись без этих 15 респ. точки.
Роберт Симер
Абсолютное количество отрицательных голосов является лучшим показателем качества по сравнению с другими ответами. Я только что понял, что второй ответ на самом деле является наиболее проголосовавшим, поэтому сказать больше нечего.
Роберт Симер

Ответы:

296

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

В jquery.slim.js удалены следующие функции:

  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
Бхойендра Раунияр
источник
6
В тонком исходнике 3.x я все еще вижу, как jQuery.fn.extendего используют для добавления методов в упакованные наборы. Вы имели в виду что-то еще в # 1?
Кантера
39
Стоит отметить, что Bootstrap 4 ориентирован на релиз JQ Slim. Анимации, вероятно, являются самой большой проблемой, но в любом случае большинство из них можно сделать лучше и быстрее, используя CSS3.
Джош Хабдас
3
Что вы имели в виду под "jQuery.each"? jQuery.each не был удален в jQuery 3 slim
Крис Москини,
18
Возможно, вам захочется отредактировать ответ, чтобы выразить это по-другому - говоря, что jquery.each здесь в списке того, что удалено, сбивает с толку.
Крис Москини
1
такие функции, как slideUp, slideDown, также не работают с уменьшенной версией.
Усман Аршад
317

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

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

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

Янни Теуниссен
источник
40

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

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

gxclarke
источник
10
Может также использоваться разработчиками, которые используют современные функции, такие как, fetch()который является современной заменой XMLHttpRequest(AJAX).
Фред
25

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

Стройное телосложение

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

ChrisW
источник
17

Я мог видеть $.ajax, удален из JQuery Slim 3.2.1

Из документов JQuery

Вы также можете использовать тонкую сборку, которая исключает модули 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 */
kiranvj
источник
Какая альтернатива $ .ajax?
Зё
2
@Zyo либо используйте объект xmlhttprequest в простом JavaScript, либо используйте обычную версию jQuery.
Киранв
выборки API является родным и очень мощный developer.mozilla.org/en-US/docs/Web/API/Fetch_API здесь , как использовать его developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Octavioamu
@Octavioamu fetch является опцией, но может потребоваться полифилл на основе поддерживаемых браузеров
kiranvj
5

Как отмечалось, Ajax и модули эффектов были исключены из jQuery slim, разница в размере 3.3.1 для разархивированной мини-версии составляет 85 КБ против 69 КБ (экономия 16 КБ для Slim) или 30 × 24 для ZIP-архивов, важно отметить, что Bootstrap 4 использует тонкий JQuery, так что если кто-то хочет полную версию, они должны называть это вместо

Иегуда Шварц
источник