Каковы различия между обычным и тонким пакетом jquery?

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

Итак, каковы различия между jquery.js и jquery.slim.js?

Ответ 1

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

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

  • jQuery.fn.extend
  • jquery.fn.load
  • jquery.each//Прилагает множество функций для обработки общих событий AJAX
  • jQuery.expr.filters.animated
  • Параметры ajax, такие как jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  • xml parsing как jQuery.parseXML,
  • анимационные эффекты, такие как jQuery.easing, jQuery.Animation, jQuery.speed

Ответ 2

Краткий ответ, полученный из анонса окончательной версии jQuery 3.0:

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

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

Ответ 3

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

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

Ответ 4

Я мог видеть, что $.ajax удаляется из jQuery slim 3.2.1

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

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