Roztříštěnost JavaScriptích knihoven

cs in code

JavaScript mám docela rád. Kór dnes s ES6, ES7 a Reactem je psaní SPAček radost. Dokud není potřeba využít nějakou knihovnu. To pak přestává být sranda. Původně jsem chtěl napsat do nadpisu nepoužitelnost, ale nakonec lze knihovny nějak použít. Je s tím však spousta trápení.

Jeden z příkladů může být samotný React a známé a používané knihovny. Vyšel nový React 0.14, který přinesl zajímavé featury. Především stateless komponenty. Samozřejmě, že po pár týdnech jsem se rozhodl novinek využít. Jenže problém – používám taky react-bootstrap a podpora je až od verze 0.27. O pět čísel větší než s kterou jsem web napsal. Za tu dobu samozřejmě stihli sáhnout přesně na ty komponenty, které používám. Takže jsem šel upravovat čerstvě napsaný kód…

Což ještě není to nejhorší, horší je závislost na knihovnu, která na kompatibilitu kašle. Pak jen koukáte do konzole, jak React warninguje, a doufáte, že autor knihovny to také upraví. Nejpozději do vydání nové verze, která warningy transformuje na errory. S takovou zkušeností mi přijde, že se vyplatí záviset jen na populární knihovny a zbytek si udělat sám.

Má to ještě jeden ironický důvod. Možnost výběru je zlo. Pro různé úlohy existuje bambilion různých balíků. Každý si napsal něco a řekl si „to se bude někomu hodit, zveřejním to“. Taková blbost! Nyní je těžké se v nepřeberném množství zorientovat. S absencí dokumentací (pahýly mezi dokumentace nepočítám) je pak těžké najít, co vlastně řeší můj problém. A hlavně aby taková knihovna byla udržovaná a stabilní, tedy neprefixovaná nulou.

Další extrémní příklad je pořádná výzva: ES6 a pár ES7 featur, React, JSX. Zkuste s takovou kombinací rozchodit testy. A to ještě není nejhorší varianta! S takovými AMD moduly to je ještě větší sranda. V práci jsme narazili na bug v testovací knihovně. Možnosti jsou dvě – buď se o verzi vrátit. Nebo ve světě JS je naopak vždy dostupná novější verze, takže upgradovat. To nám ale zařvalo z důvodu absence nejnovějšího Nodu. Čerstvého Node 4. Na Debianu samozřejmě není dostupný, ale ne protože to je Debian, kde jsou balíky se zpožděním, ale protože to chce nový gcc dostupný až pod Jessie. Tedy: chceš testovat JavaScript? Upgradni si operační systém. Jo a taky si to zkompiluj…


Lehce to zveličuji. JavaScript se mi líbí. Občas ale dokáže vytočit. Proto chci spíš šířit následující zprávu, která se nemusí nutně vztahovat na JavaScriptí svět (jen to pro něj patří z důvodu spoustu edge novinek dvojnásob):

Chápu, každý chce být autorem populární knihovny. Populární knihovna ale nevznikne rychlým nabastlením, zveřejněním a doufat v open source boha. Už na začátku je potřeba se ke kódu chovat jako bych ho měl maintenovat do konce života. Což znamená si dobře promyslet API hned při prvním návrhu, aby se později měnilo minimálně. Také to znamená být připraven řešit všechny use- casy. Jak by se asi používalo request-get, request-post, request-json, … pokaždé od jiného autora? V neposlední řadě řádně zdokumentovat, co vlastně moje knihovna řeší a popsat jak s ukázkami.





You may also like