Напишіть ще один плагін jQuery, вбийте єдинорога

Автор: Randy Alexander
Дата Створення: 2 Квітень 2021
Дата Оновлення: 16 Травень 2024
Anonim
Напишіть ще один плагін jQuery, вбийте єдинорога - Творчий
Напишіть ще один плагін jQuery, вбийте єдинорога - Творчий

Зміст

Можливо, бібліотека JavaScript jQuery побічно породила найбільшу хвилю забруднення, яку коли-небудь знав Інтернет. Для порівняння, хакери CSS та префікси постачальників можуть бути настільки шкідливими для веб-платформи, як органічна шкірка банана, залишена біля підніжжя дерева в якомусь віддаленому лісі.

Я збираюся піти за фрагментами коду, які без потреби розширюють jQuery.

Давайте подружимось.

На вільно пов’язаному загальнодоступному API

Ось рядок коду, який приблизно в 90 відсотках плагінів jQuery, джерело якого я прочитав, абсолютно марний:

$ .fn.myjQueryPlugin = ...

Більшість плагінів jQuery просто використовують jQuery, щоб робити все, що їм потрібно робити, і для цих плагінів розширення jQuery не є ні корисним, ні необхідним, тим більше, що багато з них навіть не заохочують або навіть не дозволяють поєднувати ( що, зрештою, є однією з хороших речей jQuery).

Якщо вам не потрібно спеціально вводити методи свого плагіна в jQuery, чому ви повинні так щільно прив’язувати свій загальнодоступний API до всемогутнього долара? Розглянемо такі способи запуску будь-якого гіпотетичного плагіна ohSoAwesome.js:


// 1: спосіб плагіна jQuery $ ("# some-div"). OhSoAwesome (); // 2: "ванільний JS" wayohSoAwesome.init ("# some-div");

Що стосується загальнодоступного API, перший рядок дуже щільно пов'язує плагін ohSoAwesome з jQuery, тоді як другий рядок є "бібліотечно-агностичним"; він використовує jQuery, але не відображається. Ось основна структура цього другого плагіна:

! function ($) {var self = ohSoAwesome = {// Тут робіть все, що завгодно // включаючи jQuery} window.ohSoAwesome = ohSoAwesome;} (window.jQuery);

Використання бібліотечно-агностичного API не ускладнює використання людьми вашого коду, а також не складніше вам продати свій плагін.

Ви знаєте, цей «бум» ми всі любимо блимати десь у нашій документації, щоб переконатись, що люди розуміють, наскільки болісно легко змусити наш код працювати. До цього часу ми завжди бачили такий тизер:

Включіть ohSoAwesome.js. Зробіть це. Бум.

Я знаю, про що ви думаєте, шановний користувачеві плагінів jQuery: "Так, чудово, я хочу цим скористатися. Бум". Але, давай, чи не буде наступний тизер однаково ефективним?


Переконайтеся, що jQuery включений. Включіть ohSoAwesome.js. Зробіть це. Бум.

"Цілком".

Я знаю. Болісно легко.

Будьте прихильними до майбутнього; залиште всі двері відчиненими

Після випуску плагіна неможливо сказати, якою буде його тривалість життя, наскільки успішною вона буде і наскільки широко вона пошириться в Інтернеті. Уявіть, що ви власник неймовірно успішного фрагмента коду. Те, як ви закодували ваш плагін та його загальнодоступний API (або, простіше кажучи, рядки коду, які люди вводять для використання вашого плагіна), фільтрується крізь призму jQuery. І одного разу ти хочеш з будь-якої причини звільнитися від будь-яких залежностей.

Що ж, вам буде важко продати цю ідею своїм численним користувачам. Уявіть, скажіть їм, що вони тепер повинні пройти всі частини власного коду, щоб він відповідав новому API «розв’язаного» вашого плагіна. Шанси полягають у тому, що фанати вас буквально розтоплять.

"Це скандально". Я знаю, шановний користувач. Я знаю.


Коли це можливо, краще думати з точки зору складу та агрегації, а не розширення. Чим вільніші зв'язки між частинами програмного забезпечення, тим більша гнучкість і свобода пересування розробників.

І, очевидно, чим більший успіх вашого плагіна, тим більша ефективність вашого коду в довгостроковій перспективі. О, і чим щасливішим користувач.

"Це важливо, чоловіче! Я маю на увазі, що ми розвиваємо екосистему". Так, ви повністю праві.

jQuery - це знахідка, але вона має свою ціну

jQuery - неймовірний інструмент для запуску додатків. Це допомагає досягти приголомшливих результатів за лічені хвилини, а рухається дуже динамічною та чуйною спільнотою. Він також піклується про вирішення відмінностей між браузерами для вас, що є полегшенням у, мабуть, незліченних ситуаціях.

Але ...

Доведено, що jQuery містить багато насичених жирів, що збільшує час завантаження додатків.

Браузери розвиваються неймовірно швидко, і хоча поки що занадто рано покидати підтримку старих браузерів, які відповідають за пристойну частину ваги jQuery, настане час, коли querySelector замінить Sizzle, а CSS буде використовуватися замість методів анімації.

Коли настає цей день, багато можливостей вашого плагіна jQuery можна дуже просто досягти без допомоги «жирної» бібліотеки. Коли настане цей день, Vanilla JS буде досить потужним, щоб замінити jQuery.

Що тоді робитимеш? Що робити, якщо з часом ви переробляєте свій плагін, поки він більше не покладається на jQuery? Тому що, я маю на увазі, ми маємо справу з технологією, яка рухається зі швидкістю світла, тут. І ми всі прекрасно усвідомлюємо, що в такому контексті ніщо не триває вічно. Включаючи чудовий, всемогутній jQuery.

"Може бути веб без jQuery?" Так, шановний користувач. Як би страшно не здавалося зараз, але цей час неминуче настане. Питання лише в тому, коли.

Будьте захищені від майбутнього: пишіть плагіни, які використовують jQuery, замість того, щоб писати плагіни, які розширюють jQuery (якщо, звичайно, розширення не є абсолютно необхідним та значущим). Це гарантуватиме, що якщо jQuery коли-небудь застаріє, Інтернету не доведеться продовжувати завантажувати його знову, і знову, і знову.

І знову.

Все це тому, що веб-сайти використовують фрагменти коду, які без потреби розширюють jQuery.

"Людина, веб-сайти повністю завантажуватимуться швидше на менших пристроях, якщо це коли-небудь трапиться, або, я маю на увазі, на будь-якому пристрої, яким люди користуватимуться в майбутньому".

Так. Ви правильно зрозуміли. І найкрасивіше те,ми (люди, які пишуть плагіни) просто перестали б використовувати jQuery. І це все. Без проблем, шановний користувач.

"Так, бо такі речі існують завдяки таким людям, як я. Спочатку потрібно думати про нас". Ми робимо. Повірте, ми робимо.

Що тоді робити?

Якщо я переконав вас, що написання плагінів jQuery насправді є надзвичайно злою практикою, ще не спалюйте свою роботу біля вівтаря бібліотечно-агностицизму. Ваш плагін jQuery, безумовно, чудовий! І я це маю на увазі, оскільки я сам є щасливим користувачем багатьох плагінів jQuery. Але настав час припинити поширювати доларовий API повсюдно навколо будь-якого простого завдання, яке виконує наш код, оскільки це, безумовно, буде дуже контрпродуктивним у наших зусиллях змусити Інтернет рухатися вперед у не такому далекому майбутньому.

Перестаньте шкодити цій прекрасній, винахідливій, невинній істоті, якою є веб-платформа.

Хіба що ви любите бачити, як страждають єдинороги.

Так, настав момент, коли ми готові вилікувати свою залежність від жирових бібліотек і знайти способи продовжувати використовувати API наших існуючих плагінів jQuery без потреби насправді використовувати jQuery.

"Чувак, ти хотів би придумати розумну ідею, яка змушує людей постійно твітити про тебе?" Я так гадаю. Я так гадаю.

Прочитайте Сьогодні
Як намалювати чудову сцену інопланетян на iPad
Читати Далі

Як намалювати чудову сцену інопланетян на iPad

Мені подобається малювати на дорозі до роботи. Кілька років тому я малював аквареллю в одногодинній ранковій поїздці на автобусі. Мені вдалося врівноважити маленьку ліхтарик, чашку з водою, фарбу та к...
Найкраща миша 2021 року: чудові миші для всіх ваших потреб
Читати Далі

Найкраща миша 2021 року: чудові миші для всіх ваших потреб

У вас найкраща миша для ефективного проектування? Якщо ви використовуєте мишу, яка постачається в комплекті з вашим ПК або Mac, відповідь може бути негативною. Це, мабуть, робить свою справу, але якщо...
Книгу барбекю, яку ви можете вирізати, нарізати шматочками та приготувати
Читати Далі

Книгу барбекю, яку ви можете вирізати, нарізати шматочками та приготувати

Є кілька чудових ілюстрацій до книг, і хоча це неймовірно надихає, це книга, яка дозволяє читачеві рвати, різати та нарізати як завгодно. Любителям книг не потрібно кричати - Біблія "Барбекю"...