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


436

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

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



На мой взгляд, вы приняли посредственный ответ и должны изменить это.
— Роберт Симер

@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%.


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

25

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

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

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


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 */

Какая альтернатива $ .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, так что если кто-то хочет полную версию, они должны называть это вместо

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.