Які відмінності між звичайним і тонким пакетом jquery?


436

На CDNJS розміщується пакет jquery.slim. Він має менший розмір. Які основні відмінності від оригіналу? Швидкий погляд на код не приніс відповіді, і на jquery.com я не знайшов посилання на slimпакет.

Отже, які відмінності між jquery.js та jquery.slim.js?



На мою думку, ви прийняли посередню відповідь і повинні це змінити.
Роберт Сімер

@RobertSiemer, можливо, але голоси сотень народів демонструють актуальність дуже чітко в часі, на мій погляд. Прийнята відповідь була достатньо повною та своєчасною і тепер все ще дає коротке, швидке та достатнє рішення.
SynCap

Я абсолютно не згоден з вами. Голоси за прийняті відповіді нічого не означають порівняно з іншими відповідями нижче (і ви повинні це знати). І що б відповідь не робила назад у часі, це абсолютно не має значення для публічного питання щодо веб-сайту. Люди приходять сюди зараз і потребують найкращої можливої ​​відповіді. Далі: Бходжендра Рауніяр цілком може обійтися без цих 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?
cantera

39
Варто зазначити, що Bootstrap 4 орієнтований на jQ slim release. Анімації, мабуть, є найбільшою точкою злому, але більшість із них можна зробити все краще та швидше, використовуючи CSS3 у будь-якому випадку.
Джош Хабдас

3
Що ви мали на увазі під "jQuery.each"? jQuery.each не видалено у jQuery 3 slim
Chris Moschini

18
Ви можете відредагувати відповідь, щоб висловити це інакше - кажучи jquery.each тут, у списку видалених, це заплутано.
Кріс Москіні

1
такі функції, як slideUp, slideDown також не працюють з тонкою версією.
Усман Аршад

316

Коротка відповідь, взята з оголошення про остаточний реліз 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 та ефекти, ми випустили "тонку" версію, яка виключає ці модулі. Загалом, він виключає 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?
Zyo

2
@Zyo або використовувати xmlhttprequest об’єкт у звичайному JavaScript або використовувати звичайну версію jQuery.
kiranvj

API fetch - це рідний і дійсно потужний developer.mozilla.org/en-US/docs/Web/API/Fetch_API тут, як ним користуватися developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
Octavioamu

Вибір @Octavioamu - це варіант, але може знадобитися поліфайл, заснований на підтримуваних браузерах
kiranvj

5

Як зазначалося, модулі Ajax та ефектів були виключені з jQuery slim, різниця розмірів від 3.3.1 для мінімізованої версії розпакована становить 85 к vs 69 к (економія 16 к для тонкої) або 30vs24 для блискавки, важливо зазначити, що завантажувальна програма 4 використовує тонкий jQuery, тому якщо хтось хоче повну версію, їм потрібно зателефонувати натомість

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.