Programiranje

Gatsby JS stoji na ramenih tisočih

Pred mnogimi leti je ustanovitelj Linuxa Linus Torvalds sposodil frazo Isaaca Newtona "stoji na plečih velikanov", ko je razpravljal o svojem odprtokodnem delu z Linuxom. Čeprav gre za lepo čustvo - »Hej, odlično delo sem lahko opravil le zaradi odličnih del nekaterih drugih« -, ki je morda veljalo za Linux leta 1991, vendar ne opisuje odprtokodne funkcije. leta 2020. Ko danes nekdo izda odprtokodno kodo, navsezadnje črpa iz mnogo več kot majhen nabor genialnih razvijalcev.

Ne, kot kaže zadnja izdaja Gatsby.js, so sodobni odprtokodni projekti odvisni od njih na tisoče drugih projektov. Ali kot je v intervjuju povedal ustanovitelj Gatsbyja Kyle Mathews, "stojimo na ramenih tisočih [navadnih] ljudi."

1000x hitrejše gradnje? Da, prosim!

Na začetku (splet) je bil statični generator strani. Kot je Mathews opisal v svojem prispevku, so se organizacije sčasoma obrnile na spletna mesta, ki temeljijo na zbirkah podatkov, da bi podpirala vse bolj dinamične funkcije. Ko so spletna mesta rasla, je statična generacija spletnih mest povzročala počasne hitrosti gradnje, čeprav so orodja, ki temeljijo na zbirkah podatkov, kot je WordPress, naklonjena tržnikom, ki se niso želeli truditi s kodiranjem v Markdownu. Predhodno upodabljanje je pomagalo generatorjem spletnih mest, vendar ne dovolj, da bi jim dali prednost med velikimi spletnimi mesti.

Toda to je bilo takrat; to je zdaj.

Prej leta 2020 je Gatsby predstavil Gatsby Builds, ki je s pametno kombinacijo porazdeljenega računalništva in izpopolnjenih funkcij predpomnjenja hitreje izdelal 60-krat hitreje kot standardne rešitve za neprekinjeno uvajanje. Lepo. Toda z nedavno izdajo Incremental Builds je Gatsby gradil manj kot 10 sekund za urejanje podatkov, kar lahko pomeni 1000-kratno izboljšanje v primerjavi z obstoječimi rešitvami gradnje.

Kako? "Največja stvar, ki smo jo storili," je dejal Mathews v intervjuju, "je ustvarjen sistem za sledenje odvisnosti, ki nam omogoča, da poceni ugotovimo, kaj je treba posodabljati med različicami." Če to zveni kot pristop, ki ga uporabljajo orodja za gradnjo, kot je Bazel, ali orodja za obdelavo podatkov, kot sta Apache Spark in Apache Flink, je to zato, ker je. "Gatsby obravnava dogodke sprememb spletnega mesta iz podatkov / kode kot druge procesorje pretoka - ugotovimo, kaj se je spremenilo, in to poceni posodobimo." Tradicionalni generatorji statičnih spletnih mest že dolgo uporabljajo paketni pristop k obdelavi podatkov, Gatsbyjev novi pristop pa je obdelava tokov v realnem času.

To je velika stvar, zato je pristop Gatsby uporaben na katerem koli spletnem mestu namesto na drobnem delu spleta. Prav tako je odvisna od neverjetne odprtokodne tehnologije, kot je GraphQL, ki Gatsbyju omogoča sledenje odvisnosti podatkov med stranmi in viri podatkov, tako da lahko ob spremembi nekaterih podatkov izračunajo, katere strani je treba posodobiti.

Zato sem Mathewsa vprašal, kako odvisen je Gatsby od drugih odprtih kod…

Stoji na ramenih React, GraphQL, Webpack, Babel ...

"Močno smo odvisni od veliko odličnih projektov," je dejal Matthews. In nato nadaljeval:

Mogoče bi lahko posodobili stavek, da namesto da bi stopili na ramena velikanov, stojimo na ramenih tisočih ljudi. Kar je ena izmed kul stvari pri odprtokodni kodi - ni namenjena samo genijem! Navadni ljudje lahko gradijo in / ali pomagajo vzdrževati zavitke v velikosti, ki še vedno rešujejo kritične potrebe.

Nekateri tisti "navadni ljudje" so zgradili izredno kodo, od katere je odvisen Gatsby. Glede na to, da Gatsby temelji na Reactu, React očitno takoj pride na misel. Ampak obstaja še več. Veliko več. Gatsby se prav tako zanaša na Webpack in Babel, da bosta težko obdelala in pripravila JavaScript, CSS in druga sredstva za uvajanje. Ti projekti so "izjemni z leti velikega dela tisočih inženirjev," je poudaril Mathews.

Če preverite stran paketa Babel NPM, boste našli 136 odvisnosti, vendar to izpusti vse odvisnosti drugih paketov, ki jih izda Gatsby, da ne omenjamo odvisnosti odvisnosti Gatsbyja. "Tipičen projekt Gatsby bi lahko uporabil na tisoče paketov, ki jih vzdržuje več deset tisoč inženirjev po vsem svetu, kar je presenetljivo."

Ta odvisnost od odprtokodne kode "pomaga [Gatsbyju], da se tako hitro premika in naredi toliko stvari kot relativno majhna ekipa." To je "neverjetno širok in globok ekosistem Node.js, ki ima skoraj vse, kar potrebuje [Gatsby]," je zaključil. Pa tudi sam ni. Ko boste naslednjič uporabljali Linux, prispevali k Kubernetesu ali kako drugače sodelovali z odprtokodno programsko opremo, ne pozabite, da smo v današnjem svetu vsi brezupno (in upamo!) Odvisni od milijonov "navadnih razvijalcev", ki delajo izjemne stvari.

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