Programovanie

Gatsby JS stojí na pleciach tisícov

Pred mnohými rokmi si zakladateľ Linuxu Linus Torvalds pri diskusii o svojej práci s otvoreným zdrojovým kódom pre Linux vypožičal frázu „stojaceho na pleciach obrov“ sira Isaaca Newtona. Aj keď je to pekný sentiment - „Hej, skvelú prácu som dokázal len vďaka skvelej práci niekoľkých ďalších“ - ktorá sa mohla na Linux uplatniť v roku 1991, opisovanie otvoreného zdroja nerobí dobre. v roku 2020. Nakoniec, keď niekto dnes uvoľní otvorený zdrojový kód, čerpá z oveľa viac ako len zopár geniálnych vývojárov.

Nie, ako ukazuje najnovšie vydanie Gatsby.js, od toho závisia moderné open source projekty tisíce ďalších projektov. Alebo, ako uviedol v rozhovore zakladateľ Gatsby Kyle Mathews, „stojíme na pleciach tisícov [bežných] ľudí.“

1 000x rýchlejšie zostavenie? Áno prosím!

Na začiatku (webu) bol statický generátor stránok. Postupom času, ako Mathews opísal vo svojom príspevku, sa organizácie obrátili na webové stránky založené na databáze, aby podporili čoraz dynamickejšie funkcie. S pribúdajúcimi webovými stránkami malo statické generovanie stránok za následok pomalé rýchlosti ich zostavovania, aj keď si databázové nástroje ako WordPress získali priazeň marketingových ľudí, ktorí sa nechcú obťažovať programovaním v Markdowne. Predbežné vykreslenie pomohlo generátorom webov, ale nie natoľko, aby sa stali preferovanou voľbou pre veľké weby.

Ale to bolo vtedy; toto je teraz.

Začiatkom roku 2020 predstavil Gatsby program Gatsby Builds, ktorý vďaka dômyselnej kombinácii distribuovaných výpočtov a sofistikovaných funkcií ukladania do medzipamäte zrýchlil časy vytvárania 60-krát rýchlejšie ako štandardné riešenia nepretržitého nasadenia. Pekný. Ale s nedávnym vydaním Incremental Builds získava Gatsby zostavenia dátových úprav pod 10 sekúnd, čo môže predstavovať 1000-násobné zlepšenie oproti existujúcim riešeniam zostavovania.

Ako? „Najväčšou vecou, ​​ktorú sme urobili,“ uviedol Mathews v rozhovore, „je vytvorenie systému sledovania závislostí, ktorý nám umožňuje lacno zistiť, čo je potrebné medzi jednotlivými zostavami aktualizovať.“ Ak to znie ako prístup zvolený nástrojmi na zostavenie, ako je Bazel, alebo nástrojmi na spracovanie údajov, ako sú Apache Spark a Apache Flink, je to tak. „Gatsby zaobchádza s udalosťami zmeny webových stránok z údajov / kódu ako s ostatnými procesormi streamov - zisťujeme, čo sa zmenilo, a lacno ich aktualizujeme.“ Tradičné statické generátory webov majú už dlho prístup k dávkovému spracovaniu údajov, ale Gatsbyho nový prístup je spracovanie toku v reálnom čase.

Je to veľká vec, vďaka čomu je Gatsbyov prístup použiteľný na akomkoľvek webe namiesto malého zlomku webu. Závisí to aj na úžasnej technológii otvorených zdrojov, ako je GraphQL, ktorá umožňuje Gatsbymu sledovať dátové závislosti medzi stránkami a zdrojmi údajov, aby pri zmene niektorých údajov mohli vypočítať, ktoré stránky je potrebné aktualizovať.

Spýtal som sa teda Mathewsa, ako veľmi je Gatsby závislý na inom otvorenom zdroji….

Stojaci na pleciach React, GraphQL, Webpack, Babel ...

"Sme veľmi závislí od mnohých skvelých projektov," uviedol Matthews. A potom pokračoval:

Veta by sa dala aktualizovať možno tak, že namiesto toho, aby sme stáli na pleciach obrov, stojíme na pleciach tisícov ľudí. Čo je jedna z super vecí na open source - nie je to len pre géniov! Obyčajní ľudia môžu zostavovať a / alebo pomáhať udržiavať balíčky veľkosti sústa, ktoré stále riešia kritické potreby.

Niektorí z tých „obyčajných ľudí“ vytvorili mimoriadny kód, na ktorom závisí Gatsby. Vzhľadom na to, že Gatsby je založený na Reacte, React ma očividne okamžite napadne. Ale je toho viac. Oveľa viac. Gatsby sa tiež spolieha na Webpack a Babel, že urobia ťažké práce okolo spracovania a prípravy JavaScriptu, CSS a ďalších prostriedkov, ktoré sa majú nasadiť. Tieto projekty sú „fenomenálne s rokmi skvelej práce tisícov inžinierov,“ poznamenal Mathews.

V skutočnosti, ak skontrolujete stránku balíka NPM Babel, nájdete 136 závislostí, ale tým sa vynechajú všetky závislosti iných balíkov, ktoré Gatsby vydáva, nehovoriac o závislostiach Gatsbyho závislostí. Celkovo možno povedať, Mathews, „Typický projekt Gatsby môže využívať tisíce balíkov udržiavaných desiatkami tisíc inžinierov po celom svete, čo je ohromujúce.“

Práve táto závislosť na otvorenom zdroji „pomáha [Gatsbymu] pohybovať sa tak rýchlo a robiť toľko vecí ako relatívne malý tím.“ Je to „úžasne široký a hlboký ekosystém Node.js, ktorý má takmer všetko, čo [Gatsby] potrebuje,“ uzavrel. Nie je ani sám. Keď nabudúce budete používať systém Linux, prispievať do programu Kubernetes alebo inak spolupracovať so softvérom otvoreného zdroja, nezabudnite, že v dnešnom svete sme všetci beznádejne (a dúfajme!) Závislí od miliónov „bežných vývojárov“, ktorí robia neobyčajné veci.

$config[zx-auto] not found$config[zx-overlay] not found