Programmēšana

Getsbijs JS stāv uz tūkstošiem pleciem

Pirms daudziem gadiem Linux dibinātājs Linuss Torvalds, apspriežot sava atvērtā pirmkoda darbu ar Linux, aizņēmās sera Īzaka Ņūtona frāzi “stāvēt uz milžu pleciem”. Lai gan tas ir jauks noskaņojums - "Hei, es esmu spējis paveikt lielisku darbu tikai dažu citu lieliskā darba dēļ", kas, iespējams, bija piemērots Linux 1991. gadā, tas nedara labu darbu, aprakstot atvērto pirmkodu Kad kāds šodien izlaiž atvērtā koda kodu, viņš izmanto daudz vairāk nekā niecīgu ģēniju izstrādātāju kopu.

Nē, kā liecina jaunākais Gatsby.js izlaidums, mūsdienu atvērtā koda projekti ir atkarīgi tūkstošiem no citiem projektiem. Vai arī, kā intervijā izteicās Getsbija dibinātājs Kails Matjūzs: "Mēs stāvam uz tūkstošiem [parastu] cilvēku pleciem."

1000x ātrāk būvē? Jā, lūdzu!

Sākumā (tīmeklī) bija statisko vietņu ģenerators. Laika gaitā, kā Mathews aprakstīja savā amatā, organizācijas pievērsās datu bāzēm balstītām vietnēm, lai atbalstītu arvien dinamiskākas funkcijas. Pieaugot vietnēm, statisko vietņu ģenerēšana izraisīja lēnu būvēšanas ātrumu, pat ja uz datu bāzēm balstīti rīki, piemēram, WordPress, pieauga par labu mārketinga ļaudīm, kuri nevēlējās apgrūtināt kodēšanu Markdown. Iepriekšēja renderēšana vietņu ģeneratoriem palīdzēja, taču nepietiek, lai padarītu tos par vēlamo iespēju lielām vietnēm.

Bet tas bija toreiz; tas ir tagad.

Iepriekš 2020. gadā Getsbijs iepazīstināja ar Gatsby Builds, kas izveidoja 60 reizes ātrāku ātrumu nekā standarta nepārtrauktas izvietošanas risinājumi, izmantojot gudru sadalītas skaitļošanas un izsmalcinātu kešatmiņas funkciju kombināciju. Jauki. Bet ar neseno Inkrementālo būvējumu izlaišanu Getsbijs iegūst rediģēšanas mazāk nekā 10 sekundes būvējumus, kas var būt 1000x uzlabojums salīdzinājumā ar esošajiem būvniecības risinājumiem.

Kā? "Lielākais, ko esam paveikuši," intervijā sacīja Matjūzs, "ir izveidota atkarības izsekošanas sistēma, kas ļauj mums lēti saprast, kas jāatjaunina starp būvēm." Ja tas izklausās pēc pieejas, ko izmantojuši būvniecības rīki, piemēram, Bazel, vai datu apstrādes rīki, piemēram, Apache Spark un Apache Flink, tas notiek tāpēc, ka tā ir. "Gatsbijs vietņu izmaiņu notikumus apstrādā no datiem / koda tāpat kā citus straumes procesorus - mēs noskaidrojam, kas ir mainījies, un lēti to atjauninām." Tradicionālajiem statisko vietņu ģeneratoriem jau sen ir bijusi partiju apstrādes pieeja datiem, bet Gatsbija jaunā pieeja ir reāllaika straumes apstrāde.

Tas ir liels darījums, padarot Getsbija pieeju izmantojamu jebkurā vietnē, nevis niecīgā tīmekļa daļā. Tas ir atkarīgs arī no apbrīnojamas atvērtā koda tehnoloģijas, piemēram, GraphQL, kas ļauj Getsbijam izsekot datu atkarībai starp lapām un datu avotiem, lai, mainoties kādam datu gabalam, viņi varētu aprēķināt, kuras lapas ir jāatjaunina.

Tāpēc es jautāju Matjūam, cik Getsbijs ir atkarīgs no cita atvērtā koda ...

Stāvot uz React, GraphQL, Webpack, Babel pleciem ...

"Mēs esam ļoti atkarīgi no daudziem lieliskiem projektiem," sacīja Metjūzs. Un tad viņš turpināja:

Frāzi varētu atjaunināt, iespējams, ka tā vietā, lai stāvētu uz milžu pleciem, mēs stāvam uz tūkstošiem cilvēku. Kas ir viena no foršākajām lietām par atvērto kodu - tas nav paredzēts tikai ģēnijiem! Vienkārši cilvēki var izveidot un / vai palīdzēt uzturēt koduma lieluma paketes, kas joprojām risina kritiskās vajadzības.

Daži no šiem “vienkāršajiem cilvēkiem” ir izveidojuši ārkārtas kodeksu, no kura atkarīgs Getsbijs. Ņemot vērā to, ka Getsbija pamatā ir React, acīmredzot uzreiz nāk prātā React. Bet tur ir vairāk. Daudz vairāk. Getsbijs arī paļaujas uz Webpack un Babel, lai veiktu smagu pacelšanu ap Java, CSS un citu izvietojamo līdzekļu apstrādi un sagatavošanu. Šie projekti ir “fenomenāli, ar tūkstošiem inženieru gadu lielu darbu”, atzīmēja Matjūzs.

Faktiski, pārbaudot Babel NPM pakotnes lapu, jūs atradīsit 136 atkarības, taču tajā netiek ietvertas visas citu Gatsby izlaisto pakotņu atkarības, nemaz nerunājot par Gatsby atkarību atkarībām. Kopumā Mathews teica: "Tipisks Getsbija projekts var izmantot tūkstošiem paku, ko uztur desmitiem tūkstošu inženieru visā pasaulē, un tas ir pārsteidzoši."

Tieši šī atkarība no atvērtā koda “palīdz [Getsbijam] tik ātri pārvietoties un paveikt tik daudz lietu kā salīdzinoši mazai komandai”. Tā ir "apbrīnojami plaša un dziļa Node.js ekosistēma, kurā ir gandrīz viss [Getsbijam] nepieciešamais," viņš secināja. Viņš arī nav viens. Nākamreiz, kad izmantojat Linux, sniedzat ieguldījumu Kubernetes vai kā citādi izmantojat atvērtā pirmkoda programmatūru, atcerieties, ka mūsdienu pasaulē mēs visi esam bezcerīgi (un cerams!) Atkarīgi no miljoniem “parastu izstrādātāju”, kas dara ārkārtas lietas.

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