Programování

Gatsby JS stojí na bedrech tisíců

Před mnoha lety si zakladatel Linuxu Linus Torvalds při diskusi o své práci s otevřeným zdrojovým kódem pro Linux vypůjčil frázi sira Isaaca Newtona „stojící na bedrech obrů“. I když je to příjemný sentiment - „Hele, dokázal jsem odvést skvělou práci jen díky skvělé práci několika dalších“ - který se mohl v Linuxu použít v roce 1991, nedělá dobrou práci s popisem open source v roce 2020. Koneckonců, když někdo vydá otevřený zdrojový kód, čerpá z mnohem více než malé skupiny geniálních vývojářů.

Ne, jak ukazuje nejnovější vydání Gatsby.js, závisí na tom moderní open source projekty tisíce dalších projektů. Nebo, jak uvedl v rozhovoru zakladatel Gatsby Kyle Mathews, „stojíme na bedrech tisíců [obyčejných] lidí.“

1000x rychlejší sestavení? Ano prosím!

Na začátku (webu) byl statický generátor stránek. Postupem času, jak popsal Mathews ve svém příspěvku, se organizace obrátily na webové stránky založené na databázi, aby podporovaly stále dynamičtější funkce. Jak weby rostly, statické generování webů mělo za následek pomalou rychlost sestavování, i když databázové nástroje jako WordPress rostly ve prospěch marketingových lidí, kteří nechtěli obtěžovat programování v Markdownu. Předběžné vykreslení pomohlo generátorům webů, ale ne natolik, aby se staly preferovanou možností pro velké weby.

Ale to bylo tehdy; to je teď.

Začátkem roku 2020 představil Gatsby Gatsby Builds, díky čemuž je doba sestavení 60krát rychlejší než standardní řešení pro nepřetržité nasazení díky chytré kombinaci distribuovaných výpočtů a sofistikovaných funkcí ukládání do mezipaměti. Pěkný. Ale s nedávným vydáním Incremental Builds získává Gatsby sestavení dat za 10 sekund pro úpravy dat, což může představovat 1000násobné zlepšení oproti stávajícím řešením sestavení.

Jak? "Největší věc, kterou jsme udělali," řekl Mathews v rozhovoru, "je vytvořen systém sledování závislostí, který nám umožňuje levně zjistit, co je třeba mezi sestaveními aktualizovat." Pokud to zní jako přístup zvolený nástroji pro sestavení, jako je Bazel, nebo nástroji pro zpracování dat, jako je Apache Spark a Apache Flink, je to proto, že je. "Gatsby zachází s událostmi změny webových stránek z dat / kódu jako s jinými procesory streamu - zjistíme, co se změnilo, a levně je aktualizujeme." Tradiční statické generátory webů již dlouho dávkově zpracovávaly přístup k datům, ale Gatsbyho nový přístup je zpracování proudu v reálném čase.

Je to velký problém, takže Gatsbyho přístup je použitelný na jakémkoli webu místo malého zlomku webu. Závisí to také na úžasné technologii open source, jako je GraphQL, která umožňuje Gatsbymu sledovat datové závislosti mezi stránkami a zdroji dat, takže když se nějaká část dat změní, mohou vypočítat, jaké stránky je třeba aktualizovat.

Zeptal jsem se tedy Mathews, jak je Gatsby závislý na jiném otevřeném zdroji….

Stojící na bedrech React, GraphQL, Webpack, Babel ...

"Jsme silně závislí na mnoha skvělých projektech," řekl Matthews. A pak pokračoval:

Fráze by se dala aktualizovat snad tak, že místo toho, abychom stáli na bedrech obrů, stojíme na bedrech tisíců lidí. Což je jedna z úžasných věcí na open source - není to jen pro géniové! Obyčejní lidé mohou vytvářet a / nebo pomáhat udržovat balíčky velikosti kousnutí, které stále řeší kritické potřeby.

Někteří z těchto „obyčejných lidí“ vytvořili mimořádný kód, na kterém Gatsby závisí. Vzhledem k tomu, že Gatsby je založen na React, React samozřejmě okamžitě přijde na mysl. Ale je toho víc. Mnohem více. Gatsby také spoléhá na Webpack a Babel, že provedou těžké práce se zpracováním a přípravou JavaScriptu, CSS a dalších aktiv, které mají být nasazeny. Tyto projekty jsou „fenomenální s roky skvělé práce tisíců inženýrů,“ poznamenal Mathews.

Ve skutečnosti, pokud zkontrolujete stránku balíčku Babel NPM, najdete 136 závislostí, ale to vynechá všechny závislosti jiných balíčků, které Gatsby vydává, nemluvě o závislostech Gatsbyho závislostí. Celkově vzato, řekl Mathews, „Typický projekt Gatsby by mohl využívat tisíce balíků udržovaných desítkami tisíc inženýrů po celém světě, což je ohromující.“

Právě tato závislost na otevřeném zdroji „pomáhá [Gatsbymu] pohybovat se tak rychle a dělat tolik věcí jako relativně malý tým.“ Je to „úžasně široký a hluboký ekosystém Node.js, který má téměř vše, co [Gatsby] potřebuje,“ uzavřel. Ani není sám. Až příště použijete Linux, přispějete do Kubernetes nebo se jinak zapojíte do softwaru s otevřeným zdrojovým kódem, pamatujte, že v dnešním světě jsme všichni beznadějně (a doufejme!) Závislí na milionech „běžných vývojářů“, kteří dělají mimořádné věci.

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