Obsah
- Na volně vázaném veřejném API
- Buďte přátelští k budoucnosti; nechte všechny dveře otevřené
- jQuery je dar z nebes, ale má svou cenu
- Co tedy dělat?
JavaScriptová knihovna jQuery mohla nepřímo generovat jedinou největší vlnu znečištění, jakou kdy internet poznal. Ve srovnání s tím mohou být hacky CSS a předpony dodavatelů pro webovou platformu stejně škodlivé jako organická banánová kůže, která zůstala na úpatí stromu v nějakém vzdáleném lese.
Chystám se jít po částech kódu, které zbytečně rozšiřují jQuery.
Pojďme se spřátelit.
Na volně vázaném veřejném API
Tady je řada kódu, která je asi v 90 procentech zásuvných modulů jQuery, jejichž zdroj jsem četl, naprosto zbytečná:
$ .fn.myjQueryPlugin = ...
Většina plug-inů jQuery jednoduše používá jQuery k tomu, co mají, a pro tyto pluginy není rozšíření jQuery ani užitečné, ani nutné, zejména proto, že mnoho z nich ani nepodporuje, ani neumožňuje řetězení ( což je koneckonců jedna z dobrých věcí o jQuery).
Pokud konkrétně nepotřebujete vkládat metody vašeho modulu plug-in do jQuery, proč byste měli své veřejné API tak pevně spojit se všemocným dolarem? Zvažte následující způsoby, jak aktivovat hypotetický plug-in ohSoAwesome.js:
// 1: způsob plug-inu jQuery $ ("# some-div"). OhSoAwesome (); // 2: "vanilla JS" wayohSoAwesome.init ("# some-div");
Pokud jde o veřejné API, první řádek velmi úzce spojuje modul plug-in ohSoAwesome s jQuery, zatímco druhý řádek je „library-agnostic“; používá jQuery, ale nezobrazuje se. Zde je základní struktura tohoto druhého modulu plug-in:
! function ($) {var self = ohSoAwesome = {// Zde si můžete dělat, co chcete // včetně použití jQuery} window.ohSoAwesome = ohSoAwesome;} (window.jQuery);
Používání API pro knihovnu a agnostiku lidem neztěžuje používání vašeho kódu a není pro vás o nic těžší ani prodat váš zásuvný modul.
Víte, ten „boom“, který všichni rádi v naší dokumentaci někam blikáme, abychom zajistili, že lidé pochopí, jak bolestně snadné je, aby náš kód fungoval. Doposud jsme vždy viděli tento druh upoutávky:
Zahrnout ohSoAwesome.js. Vyhoďte to. Výložník.
Vím, na co myslíte, drahý uživatel zásuvných modulů jQuery: „Ano, úžasné, chci to použít. Boom.“ Ale no tak, nebyla by následující ukázka stejně účinná?
Ujistěte se, že je součástí jQuery. Zahrnout ohSoAwesome.js. Vyhoďte to. Výložník.
"Naprosto."
Vím. Bolestně snadné.
Buďte přátelští k budoucnosti; nechte všechny dveře otevřené
Po vydání pluginu nelze říci, jaká bude jeho životnost, jak úspěšná bude a jak široce se rozšíří po internetu. Představte si, že jste vlastníkem neuvěřitelně úspěšného kódu. Způsob, jakým jste kódovali svůj plug-in a jeho veřejné API (nebo, zjednodušeně řečeno, řádky kódu, které lidé zadají pro použití vašeho plug-inu), je filtrován přes hranol jQuery. A jednoho dne se chcete z jakéhokoli důvodu odvázat od jakýchkoli závislostí.
Tuto myšlenku prodáte mnoha uživatelům jen těžko. Představte si, že jim řeknete, že nyní musí projít všemi částmi svého vlastního kódu, aby byl v souladu s novým „uvolněným“ API vašeho pluginu. Je pravděpodobné, že se vaše fanouškovská základna doslova roztaví.
„Je to skandální.“ Vím, drahý uživateli. Vím.
Kdykoli je to možné, je lepší myslet spíše na složení a shodu než na rozšíření. Čím volnější jsou vazby mezi jednotlivými částmi softwaru, tím větší je vývojářům flexibilita a volnost pohybu.
A samozřejmě, čím větší je úspěch vašeho zásuvného modulu a tím vyšší je v dlouhodobém horizontu vyšší účinnost vašeho kódu. A čím je uživatel šťastnější.
„To je důležité, člověče! Myslím, že je to ekosystém, ve kterém se vyvíjíme.“ Ano, máte úplnou pravdu.
jQuery je dar z nebes, ale má svou cenu
jQuery je neuvěřitelný nástroj pro spouštění aplikací. Pomůže vám dosáhnout úžasných věcí během několika minut a je poháněn velmi dynamickou a pohotovou komunitou. Rovněž se postará o řešení rozdílů mezi prohlížeči, což je úleva v pravděpodobně nespočetných situacích.
Ale ...
Bylo prokázáno, že jQuery obsahuje mnoho nasycených tuků, které prodlužují dobu načítání aplikace.
Prohlížeče se vyvíjejí neuvěřitelně rychle a přestože je ještě příliš brzy na to, abychom se zbavili podpory starších prohlížečů, které jsou zodpovědné za slušnou část váhy jQuery, přijde čas, kdy querySelector nahradí Sizzle a místo metod animace se použije CSS.
Až ten den přijde, mnoha funkcí plug-inu jQuery lze snadno dosáhnout bez pomoci „tlusté“ knihovny. Až ten den přijde, bude Vanilla JS dostatečně silná, aby nahradila jQuery.
Co tedy uděláte? Co když časem svůj plug-in refaktorujete, dokud se již nebude spoléhat na jQuery? Protože tím máme na mysli technologii, která se zde pohybuje rychlostí světla. A všichni si velmi dobře uvědomujeme, že v tomto kontextu nic netrvá věčně. Včetně úžasného, všemohoucího jQuery.
„Mohl by existovat web bez jQuery?“ Ano, vážený uživateli. Jakkoli se to teď může zdát děsivé, ten čas nevyhnutelně přijde. Jedinou otázkou je, kdy.
Buďte připraveni na budoucnost: zapisujte zásuvné moduly, které používají jQuery, místo psaní zásuvných modulů, které rozšiřují jQuery (pokud ovšem rozšíření není nezbytně nutné a smysluplné). Tím zajistíte, že pokud jQuery někdy zastará, web jej nebude muset stále načítat znovu a znovu a znovu.
A znovu.
To vše jen proto, že webové stránky používají části kódu, které zbytečně rozšířily jQuery.
„Člověče, webové stránky by se úplně načítaly rychleji na menších zařízeních, pokud by k tomu někdy došlo, nebo na jakémkoli zařízení, které lidé budou v budoucnu používat.“
Ano. Máte pravdu. A krásná věc je,my (lidé, kteří píší plug-iny) bychom prostě přestali používat jQuery. A to je vše. Žádné potíže pro vás, drahý uživateli.
„Jo, protože ty věci existují díky lidem jako jsem já. Nejprve musíš na nás myslet.“ My ano. Věřte mi, že ano.
Co tedy dělat?
Pokud jsem vás přesvědčil, že psaní zásuvných modulů jQuery je ve skutečnosti extrémně zlá praxe, nespalujte svou práci u oltáře knihovnického agnosticismu. Váš plug-in jQuery je určitě úžasný! A myslím to vážně, protože jsem sám šťastným uživatelem mnoha zásuvných modulů jQuery. Ale je čas přestat po celou dobu šířit dolarové API pro jakýkoli jednoduchý úkol, který náš kód dělá, protože to bude určitě velmi kontraproduktivní v našem úsilí, aby se web posunul vpřed v ne tak vzdálené budoucnosti.
Přestaňte bolet to krásné, vynalézavé a nevinné stvoření, kterým webová platforma je.
Pokud nevíte, jak jednorožci trpí.
Ano, nastal okamžik, kdy jsme připraveni vyléčit naše závislosti na tlustých knihovnách a najít způsoby, jak dál používat naše existující API plug-inů jQuery, aniž by bylo nutné jQuery skutečně používat.
„Kamaráde, jako přijít s chytrým nápadem, díky kterému o tobě lidé neustále pípají?“ Myslím že ano. Myslím že ano.