Implementacija čiste arhitekture z Nest.JS PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Implementacija čiste arhitekture z Nest.JS

Ta članek je namenjen navdušencem, ki si prizadevajo napisati čisto, razširljivo in, kar je še pomembneje, kodo, ki jo je mogoče preoblikovati. Podal bo idejo o tem, kako nam lahko Nest.JS pomaga pri pisanju čiste kode in katero osnovno arhitekturo uporablja.

Implementacija čiste arhitekture z Nest.JS bo od nas zahtevala, da najprej razumemo, kaj je to ogrodje in kako deluje.

Nest ali Nest.JS je ogrodje za gradnjo učinkovitih, razširljivih aplikacij Node.js (na strani strežnika), izdelanih s TypeScript. Uporablja Express ali Fastify in omogoča raven abstrakcije, ki razvijalcem omogoča uporabo velikega števila modulov (tretjih proizvajalcev) v njihovi kodi.

Poglobimo se v to, kaj sploh je ta čista arhitektura. 

No, vsi ste morda že uporabljali ali vsaj slišali za arhitekturo MVC. MVC pomeni model, pogled, krmilnik. Ideja za tem je ločiti strukturo našega projekta na 3 različne dele.

1. Model: Vsebovala bo datoteko Object, ki se preslika z Relation/Documents v DB.

2. Krmilnik: Je obdelovalec zahtev in je odgovoren za implementacijo poslovne logike in vse manipulacije podatkov.

3. Pogled: Ta del bo vseboval datoteke, ki se ukvarjajo s prikazovanjem podatkov, bodisi datoteke HTML ali nekatere datoteke mehanizma za predloge.

Za ustvarjanje modela potrebujemo nekakšno orodje/modul/knjižnico ORM/ODM, s katerim ga lahko zgradimo. Na primer, če neposredno uporabite modul, recimo 'sequelize', in nato uporabite istega za implementacijo prijave v vaš krmilnik in naredite svojo osnovno poslovno logiko odvisno od 'sequelize'. Sedaj, recimo po 10 letih, je na trgu boljše orodje, ki ga želite uporabiti, a takoj ko z njim zamenjate sequelize, boste morali spremeniti veliko vrstic kode, da preprečite lomljenje. Prav tako boste morali še enkrat preizkusiti vse funkcije, da preverite, ali je uspešno nameščena ali ne, kar lahko tudi izgublja dragocen čas in vire. Za premagovanje tega izziva lahko uporabimo zadnje načelo SOLID-a, ki je načelo inverzije odvisnosti, in tehniko, imenovano vstavljanje odvisnosti, da se izognemo takšni zmešnjavi.

Ste še vedno zmedeni? Naj vam podrobno razložim.

Načelo inverzije odvisnosti torej preprosto pove, da ustvarite svojo osnovno poslovno logiko in nato okoli nje zgradite odvisnost. Z drugimi besedami, osvobodite svojo osnovno logiko in poslovna pravila kakršne koli odvisnosti in spremenite zunanje plasti tako, da bodo odvisne od vaše osnovne logike, namesto da je vaša logika odvisna od tega. To je tisto, kar je čista arhitektura. Odstranjuje odvisnost od vaše osnovne poslovne logike in okoli nje zgradi sistem na tak način, da se zdi, da so odvisni od nje, namesto da bi bil on odvisen od njih.

Poskusimo to razumeti s spodnjim diagramom.

vir: Čisti arhitekturni stožec 

Vidite lahko, da smo našo arhitekturo razdelili na 4 plasti:

1. Subjekti: Entitete so v bistvu modeli (pravila podjetja), ki določajo pravila vašega podjetja in povedo, za kaj gre v aplikaciji. Ta plast se sčasoma skorajda ne spremeni in je običajno abstraktna ter ni neposredno dostopna. Na primer, vsaka aplikacija ima 'uporabnika'. Katera vse polja naj uporabnik shrani, njihove vrste in odnosi z drugimi entitetami bodo sestavljali Entiteto.

2. Primeri uporabe: Pove nam, kako lahko izvajamo pravila podjetja. Ponovno vzemimo primer uporabnika. Zdaj vemo, s katerimi podatki je treba delovati, primer uporabe nam pove, kako delati s temi podatki, na primer, da bo uporabnik imel geslo, ki ga je treba šifrirati, uporabnika je treba ustvariti in geslo lahko kadar koli spremenite. določena časovna točka itd.

3. Krmilniki/prehodi: To so kanali, ki nam pomagajo implementirati primere uporabe z uporabo zunanjih orodij in knjižnic z uporabo vbrizgavanja odvisnosti.

4. Zunanja orodja: Vsa orodja in knjižnice, ki jih uporabljamo za gradnjo naše logike, bodo prišla pod to plast, npr. ORM, e-poštni program, šifriranje itd.

Orodja, ki jih uporabljamo, bodo odvisna od tega, kako jih usmerjamo v primere uporabe, primeri uporabe pa bodo odvisni od entitet, ki so jedro našega poslovanja. Na ta način smo obrnili odvisnost od navzven navznoter. To pomeni načelo inverzije odvisnosti za SOLID.

V redu, zdaj ste dojeli bistvo Nest.JS in razumeli, kako deluje čista arhitektura. Zdaj se postavlja vprašanje, kako sta to dvoje povezano?  

Poskusimo razumeti, kateri so 3 gradniki Nest.JS in kaj vsak od njih počne.

  1. Moduli: Nest.JS je strukturiran tako, da lahko vsako funkcijo obravnavamo kot modul. Na primer, vse, kar je povezano z uporabnikom, kot so modeli, krmilniki, DTO-ji, vmesniki itd., je mogoče ločiti kot modul. Modul ima krmilnik in kup ponudnikov, ki so vstavitvene funkcionalnosti, kot so storitve, orm, emailer itd.
  1. Kontrolorji: Krmilniki v Nest.JS so vmesniki med omrežjem in vašo logiko. Uporabljajo se za obravnavanje zahtev in vračanje odgovorov na odjemalsko stran aplikacije (na primer klic API-ju).
  1. Ponudniki (storitve): Ponudniki so vbrizgane storitve/funkcionalnosti, ki jih lahko vstavimo v krmilnike in druge ponudnike, da zagotovimo prilagodljivost in dodatno funkcionalnost. Abstrahirajo vsako obliko kompleksnosti in logike.

Povzeti,

  • Imamo krmilnike, ki delujejo kot vmesniki (3. plast čiste arhitekture)
  • Imamo ponudnike, ki jih je mogoče vbrizgati, da zagotovijo funkcionalnost (4. plast čiste arhitekture: DB, naprave itd.)
  • Ustvarimo lahko tudi storitve in repozitorije, da definiramo naš primer uporabe (2. plast)
  • Svoje entitete lahko definiramo z uporabo ponudnikov DB (1. plast)

ugotovitev:

Nest.JS je zmogljivo ogrodje Node.JS in najbolj znan tipkopis, ki je danes na voljo. Zdaj, ko ste se seznanili s tem ogrodjem, se gotovo sprašujete, ali ga lahko uporabimo za izgradnjo strukture projekta s čisto arhitekturo. No, odgovor je - Da! Vsekakor. kako Pojasnil bom v naslednji seriji tega članka. 

Do takrat pa ostanite z nami!

O Avtor:

Junaid Bhat trenutno dela kot tehnični vodja v Mantra Labs. Je tehnološki navdušenec, ki si vsak dan prizadeva postati boljši inženir, tako da sledi industrijskim standardom in je usmerjen k bolj strukturiranemu pristopu k reševanju problemov. 

Preberite naš najnovejši blog: Ogrodje Golang-Beego in njegove aplikacije

Znanje je vredno dostaviti v mapo »Prejeto«

Časovni žig:

Več od Laboratoriji Mantra