JQuery 3

Ми очікуємо, що апгрейд Ваших проектів до версії 3.0 не завдасть багато клопоту. Так, є кілька критичних змін, які виправдали головну фішку версії, і ми сподіваємося, що це не вплине на процес оновлення.
Для допомоги в апгрейді ми додали новий посібник із оновлення до версії 3.0, а плагін jQuery Migrate 3.0 допоможе визначити проблеми сумісності в коді. Ваша думка про зміни дуже допоможе нам і тому, будь ласка, спробуйте її на Вашому поточному проекті.
Зрозуміло, файли jQuery 3.0 доступні з CDN:
Також можна встановити через npm:
Тонка збірка
Нарешті, ми додали щось нове до цього релізу. Якщо Вам не потрібен AJAX, або волієте використовувати одну з безлічі бібліотек, орієнтованих на AJAX-запити, а також простіше використовувати комбінацію CSS з маніпуляціями класів для всієї анімації, то поряд зі звичайною версією jQuery, що включає AJAX і модулі ефектів, ми випускаємо "тонку" версію, яка їх не містить. Загалом цей код вважається застарілим і ми просто його викинули (жарт). У наш час розмір jQuery дуже рідко турбує продуктивність, але тонка версія на цілих 6 Кб менша за звичайну — 23.6к проти 30к.
Ці файли також доступні в CDN:
Сумісність з jQuery UI та jQuery Mobile
Великі зміни
У цій статті наведено лише основні моменти нових можливостей, покращень та виправлень. Докладніше можна прочитати в інструкції з апгрейду. Повний перелік виправлених проблем доступний у нашому баг-трекері на GitHub. Якщо ви читали блог по 3.0.0-rc1, наведені нижче функції не змінилися.
jQuery.Deferred тепер Promises/A+ сумісно
Об'єкти jQuery.Deferred були оновлені длясумісності з Promises/A+ та ES2015 Promises та перевірені за допомогою Promises/A+ Compliance Test Suite. Це означає, що у методі.then()необхідно внести кілька істотних змін. Звичайно, можна відновити будь-яке використання.then()шляхом перейменування в.pipe(), що нині вважається застарілим (і має однакову сигнатуру).
1 виправлення
Додали.then()функцію зворотного виклику (колбек). Раніше доводилося викликати виняток для виконання функції зворотного дзвінка. При цьому будь-які дані, що спираються на поверненні відповіді ніколи не повернуться як винятки.
2 виправлення
Раніше під час реєстрації «first callback» отримували помилку і весь наступний код припиняв роботу. Ані другий «колбек», ані третій не були зареєстровані. Новий, сумісний зі стандартами «колбек», у разі успіху повертає true 11 .err- це значення відмови першого колбека.
Стан дозволу Deferred, створеного.then(), зараз контролюється зворотними викликами-виключеннями, що повертають значення та non-thenable. У попередніх версіях, поверталисяrejectionзначення.
Раніше, лог містив "rejection callback 1 value1", "rejection callback 2 value2", і "rejection callback 3 undefined".
Сумісний з новими стандартами метод записуватиме логи виду: "rejection callback 1 value1", "success callback 2 value2", and "rejection callback 3 [object Error]".
3 виправлення
Колбек завжди викликається асинхронно, навіть якщо Deferred було повернено. Раніше вони були синхронними.
Раніше, лог містив “success callback” then “after binding”. Тепер матиме вигляд “after binding” and then “success callback”.
УВАГА! В той час якспіймані винятки мають переваги для налагодження в браузері, це набагато більш «дружній» метод, щоб вивчити причину виникнення колбеків. Майте на увазі, що це завжди накладає на Вас відповідальність за додавання хоча б одного колбека для обробки відмов. Інакше помилки можуть залишитися непоміченими.
Ми розробили сумісний з Deferreds плагін для допомоги у дебазі — Promises/A+. Якщо Ви не бачите потрібної інформації про помилку в консолі для визначення його джерела, перевірте, чи встановлено плагін jQuery Deferred Reporter Plugin.
jQuery.whenтакож був оновлений для прийняття будь-якого thenable об'єкта, який включає в себе власні об'єкти Promise. https://github.com/jquery/jquery/issues/1722 https://github.com/jquery/jquery/issues/2102
Доданий .catch() в Deferreds
У разі помилок головне не мовчати
Можливо, Ви коли-небудь ставили божевільним питанням «що за зміщення вікна?».
У минулому jQuery іноді намагалася повернути таке щось замість обробки помилок. У даному випадку просить змістити вікно до того часу, поки воно не буде в положенні. За допомогою jQuery 3.0 такі випадки кидатимуть помилки, ігноруючи ці безбашенні відповіді. https://github.com/jquery/jquery/issues/1784
Вилучено застарілі псевдоніми подій
Тепер із використанням анімації
На платформах, що підтримуютьrequestAnimationFrameAPI, який нині скрізь, крім IE Список змін тут
Підтримка браузерів
- Internet Explorer: 9+
- Chrome, Edge, Firefox, Safari: поточна та попередня версії
- Opera: поточна версія
- Safari Mobile iOS: 7+
- Android 4.0+
- Випнули 21 байт (eaa3e9f)
- Збереження кешу URL-запитів (#1732, e077ffb)
- Виконання колбека jQuery#load з коректним контекстом (#3035, 5d20a3c)
- Велика честь забезпечення ajaxSettings.traditional (#3023, df2051c)
- Видалення функції jQuery.trim (0bd98b1), що не використовується.
- Treat literal and function-returned null/undefined the same (#3005, 9fdbdd3)
- Reduce size (91850ec)
- Improve support properties computation (#3018, 44cb97e)
- Take Safari 9.1 в рахунок (234a2d8)
- Ліміт selection to #qunit-fixture in attributes.js (ddb2c06)
- Set Edge's expected support for clearCloneStyle to true (28f0329)
- Fix Deferred tests в Android 5.0's stock Chrome browser & Yandex.Browser (5c01cb1)
- Add additional test for jQuery.isPlainObject (728ea2f)
- Build: update QUnit and fix incorrect test (b97c8d3)
- Fix manipulation tests in Android 4.4 (0b0d4c6)
- Remove side-effects of attributes test (f9ea869)
- Account for new offset tests (f52fa81)
- Make iframe tests wait after checking isReady (08d73d7)
- Refactor testIframe() to make it DRYer and more consistent (e5ffcb0)
- Weaken sync-assumption from jQuery.when to jQuery.ready.then (f496182)
- Test element position outside view (#2909, a2f63ff)
- Make the regex catching Safari 9.0/9.1 більше обмежень (7f2ebd2)
Traversing
Тільки зареєстровані користувачі можуть брати участь в опитуванні. Заходьте будь ласка.