Зміст
Коли jQuery був вперше представлений, він змінив світ. Це дало нам усім можливість посилатися на елементи на сторінці з JavaScript, як ми могли б у CSS. Мало того, але він дав нам API для цих елементів, який був на милі попереду того, що мав браузер. Ми могли їх приховувати, додавати та видаляти класи і навіть писати власні плагіни, щоб робити безпрецедентні дії.
Це також приховувало від нас велику частину складності роботи з тією епохою браузерів. Завдяки копітким виправленням були розроблені всі різні помилки, які включали ці браузери, поки ви не могли бути впевнені, що якщо щось буде зроблено з jQuery, це буде працювати.
Незабаром jQuery став простою мовою Інтернету. Багато людей дізналися про це ще до того, як вивчили сам DOM: це стало неявною залежністю в кожній бібліотеці та інструменті. jQuery був постійно присутній.
Але з того часу справа пішла далі. jQuery процвітав у той час, коли браузери були зламані і повільно змінювалися, але це саме змінюється.
Починаючи з IE8, браузери включали document.querySelector метод, який надає нам усі вбивчі функції jQuery прямо з коробки. IE9 дав нам addEventListener, звільняючи нас від onclick і onmouseover. У IE10 програмістам JavaScript було надано classList об'єкт, що дозволяє нам додавати та видаляти класи без хитрого маніпулювання рядками.
І це, не торкаючись усіх дивовижних речей, які CSS може робити взагалі без будь-якого JavaScript. CSS нарешті стає досить потужним, щоб справді полегшити відокремлення логіки JavaScript від її презентації. У сучасних браузерах класи можуть представляти стан, в якому знаходяться речі, а CSS може візуально визначати, що це означає, але ви не можете цього робити, якщо ваш код завалений дзвінками до .hide ().
Крім усього іншого, є нові потужні API, до яких ви не можете отримати доступ через jQuery самостійно: такі речі, як новий MutationObserver та WebRTC, вимагають спілкування з самим браузером. І, виявляється, це не все так погано.
Використовуйте: не залежать від цього
Можливо, нам більше не знадобиться jQuery, але яка шкода від його використання, якщо це полегшує вам роботу? Немає жодного! Продовжуйте використовувати jQuery для створення своїх веб-сайтів та додатків. Але якщо ви будуєте бібліотеку, розгляньте можливість не перетворювати її на залежність.
Чому? Тому що jQuery - це велика, монолітна бібліотека. Він включає Ajax, маніпуляції та відбір DOM, події, обіцянки, ефекти та цілу купу службових програм. Маючи все це в одному пакеті, ми замикаємо всіх у способі jQuery - що є також 10-річним способом.
Альтернативні рішення
То що ми можемо використовувати замість цього? Q робить блискучі справи, поєднуючи обіцянки та обробляючи винятки. Анімація CSS набагато плавніша, ніж будь-що, що ви могли б зробити з JavaScript. Незабаром спеціальні елементи нададуть найкращий можливий спосіб побудови багаторазових компонентів. Якщо ми живемо у світі, де ви можете вибрати, яку бібліотеку маніпуляцій DOM ви хочете, або ви хочете використовувати RSVP.js або Q для обіцянок, ми можемо отримати кращі рішення з відкритим кодом для всіх цих проблем.
Крім усього цього, стиль плагіна jQuery розміщує кожну бібліотеку, яку ви включаєте, в той самий, постійно зростаючий простір імен. Все є $ (el) .colorPicker (), або $ (el) .chosen (). Це не найкраще відповідає майбутньому, в якому ми маємо реальні модулі. Модулі дозволять нам чітко відокремлювати наші залежності та легше створювати оптимізовані збірки. Незалежно від того, чи будете ви використовувати Browserify, RequireJS або модулі, додані з ECMAScript 6, це майбутнє. Єдиний, глобальний простір імен - це не так.
То як же нам дійти до цього сміливого нового світу? Перший крок - для всіх бібліотек, які нам потрібні, щоб звільнити свою смерть від jQuery. Якщо вони стануть вільними від залежності, ми можемо уявити, як створювати сучасний веб-додаток без нього.
Є одне важливе застереження: якщо ви націлюєтесь на старіші браузери, включаючи IE6 та 7 або Android 2.3, ви ще не готові до цього сміливого нового світу. Насолоджуйтесь jQuery до його меж і мрійте про майбутнє, коли нарешті зможете розмовляти мовою браузера.
Слова: Зак Блум
Зак Блум є співзасновником eager.io і працює над тим, щоб зробити інструменти з відкритим кодом доступними для всіх. Він створив YouMightNotNeedjQuery.com разом зі своїм другом Адамом Шварцем. Ця стаття спочатку з’явилася у номері 255 журналу net.