Programavimas

Gatsbis JS stovi ant tūkstančių pečių

Prieš daugelį metų „Linux“ įkūrėjas Linusas Torvaldsas, pasitaręs apie atvirojo kodo darbą su „Linux“, pasiskolino sero Isaaco Newtono „stovėjimo ant milžinų pečių“ frazę. Nors tai puikus požiūris - „Ei, aš galėjau padaryti puikų darbą tik dėl kelių kitų puikių darbų“, kuris galbūt buvo pritaikytas „Linux“ 1991 m., Jis nėra geras darbas aprašant atvirąjį šaltinį 2020 m. Kai kas nors šiandien išleidžia atvirojo kodo kodą, jis naudojasi kur kas daugiau nei mažu genialių kūrėjų rinkiniu.

Ne, kaip rodo naujausias Gatsby.js leidimas, nuo šiuolaikinių atvirojo kodo projektų priklauso tūkstančiai kitų projektų. Arba, kaip interviu pasakė „Gatsby“ įkūrėjas Kyle'as Mathewsas: „Mes stovime ant tūkstančių [paprastų] žmonių pečių“.

1000x greičiau sukuriama? Taip prašau!

Pradžioje (žiniatinklyje) buvo statinis svetainės generatorius. Laikui bėgant, kaip Mathewsas aprašė savo įraše, organizacijos kreipėsi į duomenų bazėmis pagrįstas svetaines, kad palaikytų vis dinamiškesnes funkcijas. Didėjant svetainėms, statinių svetainių generavimas lėmė greitą kūrimą, net kai duomenų bazės valdomi įrankiai, pvz., „WordPress“, augo rinkodaros žmonių, nenorėjusių vargti, koduojant „Markdown“, naudai. Išankstinis perteikimas padėjo svetainių generatoriams, tačiau jų nepakako, kad jie būtų pageidaujama didelių svetainių parinktis.

Bet tai buvo tada; tai yra dabar.

Anksčiau, 2020 m., „Gatsby“ pristatė „Gatsby Builds“, kuris kūrimo laiką 60 kartų viršijo standartinius tęstinio diegimo sprendimus, sumaniai paskirstyto skaičiavimo ir sudėtingų talpyklos funkcijų deriniu. Malonu. Tačiau neseniai išleidus „Inkremental Builds“, „Gatsby“ renka mažiau nei 10 sekundžių duomenų redagavimo darbus, o tai gali būti 1000x patobulinimas, palyginti su esamais versijų sprendimais.

Kaip? „Didžiausias mūsų nuveiktas dalykas, - sakė Mathewsas interviu, - sukuria priklausomybės stebėjimo sistemą, kuri leidžia mums pigiai išsiaiškinti, ką reikia atnaujinti tarp versijų.“ Jei tai skamba kaip „build“ įrankių, tokių kaip „Bazel“, ar duomenų apdorojimo įrankių, tokių kaip „Apache Spark“ ir „Apache Flink“, metodas, taip yra todėl, kad taip yra. „„ Gatsby “svetainės keitimo įvykius traktuoja iš duomenų / kodo kaip ir kitus srauto procesorius - mes suprantame, kas pasikeitė, ir pigiai jį atnaujiname.“ Tradiciniai statinių svetainių generatoriai jau seniai naudoja paketinio duomenų apdorojimo metodą, tačiau naujasis Gatsby požiūris yra srauto apdorojimas realiuoju laiku.

Tai yra didelis dalykas, todėl „Gatsby“ požiūrį galima naudoti bet kurioje svetainėje, o ne mažoje interneto dalyje. Tai taip pat priklauso nuo nuostabios atvirojo kodo technologijos, tokios kaip „GraphQL“, leidžiančios „Gatsby“ stebėti duomenų priklausomybę tarp puslapių ir duomenų šaltinių, kad pasikeitus kai kuriems duomenims jie galėtų apskaičiuoti, kuriuos puslapius reikia atnaujinti.

Taigi paklausiau Mathewso, kiek Gatsbis priklauso nuo kito atvirojo kodo ...

Atsistojus ant „React“, „GraphQL“, „Webpack“, „Babel“ pečių ...

"Mes esame labai priklausomi nuo daugybės puikių projektų", - sakė Matthewsas. Ir tada jis tęsė:

Frazę būtų galima atnaujinti galbūt tuo, kad užuot stovėję ant milžinų pečių, mes stovime ant tūkstančių žmonių pečių. Tai yra vienas šauniausių dalykų apie atvirąjį kodą - jis skirtas ne tik genijams! Paprasti žmonės gali sukurti ir (arba) padėti prižiūrėti įkandimo dydžio paketus, kurie vis tiek patenkina kritinius poreikius.

Kai kurie iš tų „paprastų žmonių“ sukūrė nepaprastą kodeksą, nuo kurio priklauso Getsbis. Atsižvelgiant į tai, kad „Gatsby“ yra pagrįstas „React“, „React“ akivaizdžiai iš karto ateina į galvą. Bet yra ir daugiau. Daug daugiau. „Gatsby“ taip pat pasikliauja „Webpack“ ir „Babel“, kad atliktų sunkų apdorojimą ir parengtų „JavaScript“, CSS ir kitų turimų išteklių dislokavimą. Šie projektai yra „fenomenalūs, nes ilgus metus dirbo tūkstančiai inžinierių“, - pažymėjo Mathewsas.

Tiesą sakant, jei patikrinsite „Babel NPM“ paketo puslapį, rasite 136 priklausomybes, tačiau tai praleidžia visas kitų „Gatsby“ išleidžiamų paketų priklausomybes, jau nekalbant apie „Gatsby“ priklausomybių priklausomybes. Apskritai, pasak Mathewso, „tipiškame„ Gatsby “projekte gali būti naudojami tūkstančiai paketų, kuriuos prižiūri dešimtys tūkstančių inžinierių visame pasaulyje, o tai yra stulbinantis“.

Būtent ši priklausomybė nuo atvirojo kodo „padeda [Gatsby] taip greitai judėti ir atlikti tiek daug dalykų, kaip palyginti mažai komandai“. Tai „nuostabiai plati ir gili„ Node.js “ekosistema, kurioje yra beveik viskas, ko reikia [Gatsby]“, - apibendrino jis. Taip pat jis nėra vienas. Kitą kartą, kai naudosite „Linux“, prisidėsite prie „Kubernetes“ ar kitaip įsitraukite į atvirojo kodo programinę įrangą, nepamirškite, kad šiandieniniame pasaulyje visi esame beviltiškai (ir tikimės!) Priklausomi nuo milijonų „paprastų kūrėjų“, darančių nepaprastus dalykus.