2021. godine JavaScript je bio najrašireniji programski jezik.
Privlačnost ove tehnologije je neosporna, što se vidi po velikom broju okvira koji omogućuju JavaScript programiranje.
Postoje Angular, React i Vue na frontendu, kao i Express i Next na backendu, da spomenemo neke.
S toliko prekrasnih okvira za pozadinsko programiranje u JavaScriptu koji su dostupni, možda razmišljate zašto bih tražio nešto drugačije, a ne jednostavno koristeći Express ili Next.
Možda trebate brzo pokrenuti proces razvoja s pristojnim šablonom, a ručnim dodavanjem ne samo novih kontrolera nego i usluga postajete bolesni.
Ili želite stvoriti veliki, skalabilan softver kojim je jednostavno upravljati. Ili možda jednostavno želite raditi na učinkovitiji i praktičniji način.
Bez obzira na to što je točno u vašim okolnostima, Nest.js može biti savršeno rješenje za vaše potrebe.
Ovaj će post pružiti uvid u NestJS, kao i praktično iskustvo.
Što je NestJS?
NestJS je progresivni Node okvir koji je otvorenog koda, proširiv i prilagodljiv .Js okvir za izgradnju, angažiranje i izazovne pozadinske sustave. To je sada čvor s najbržom stopom rasta.
TypeScript okvir za js. NestJS se koristi za stvaranje aplikacija koje su skalabilne, testirane i slabo povezane.
Dodaje skalabilnost Nodeu. Js poslužitelji podignuti su na potpuno novu razinu. PostgreSQL, MongoDB i MySQL su među podržanim bazama podataka.
NestJS je proširiv jer se može koristiti s drugim knjižnicama; fleksibilan zbog svog prilagodljivog potpuno razvijenog ekosustava. I progresivan budući da podržava JavaScript značajke i principe dizajna.
Prvenstveno je pod utjecajem Angulara, Reacta i Vuea i dolazi s ugrađenom injekcijom ovisnosti.
Značajke
- Jednostavan je za korištenje, učenje i savladavanje.
- Besplatno je i open-source (MIT licenca)
- Snažno sučelje naredbenog retka (CLI) za povećanu produktivnost i jednostavnost razvoja
- Programi za testiranje jedinica koji su jednostavni za korištenje
- Koristi se TypeScript, strogo tipkan jezik koji je nadskup JavaScripta.
- Razvoj i održavanje aktivne kodne baze.
- Podrška za stotine modula specifičnih za gnijezdo koji olakšavaju sučelje s popularnim tehnologijama i idejama kao što su TypeORM, Mongoose, GraphQL, prijavljivanje, provjera valjanosti, predmemorija, WebSockets i još mnogo toga.
Koji su građevni blokovi NestJS-a?
Komponente izgradnje Nest aplikacija navedene su u nastavku; ima i drugih, ali ova tri su najznačajnija. Pogledajmo ih na brzinu.
1. kontroleri
Kontrolori su zaduženi za obradu dolaznih zahtjeva i odgovaranje klijentima. Prima određene HTTP zahtjeve, a sustav usmjeravanja određuje koji kontroler dobiva koji zahtjev.
Zatim sastavlja odgovarajući odgovor za slanje. Uz pomoć klasa i dekoratora, napravljen je jednostavan kolektor i svaki kontroler ima svoj skup ruta za obavljanje raznih zadataka.
2. Pružatelji usluga
Dobavljači su ključna ideja u Nestu. Mnoge osnovne klase Nest - usluge, spremišta, tvornice, pomoćnici i tako dalje - mogu se koristiti kao pružatelji usluga.
Osnovni pojam pružatelja je da se može ubaciti kao ovisnost; to implicira da objekti mogu formirati različite asocijacije jedni s drugima, a uloga "povezivanja" instanci objekata može se uglavnom prenijeti na Nest runtime sustav.
3. moduli
Modul je klasa s @Module() dekoratorom koji organizira komponente strukture aplikacije. Svaka aplikacija ima korijenski modul koji se koristi za konstruiranje grafa aplikacije, koji dalje rješava ovisnosti i interakcije između pružatelja usluga i modula.
Ovaj dekorator daje metapodatke Nest.js-u kako bi se identificirale komponente, kontroleri ili drugi resursi koji će se koristiti u kodu aplikacije i kombinirati ih u jedan skup.
Svaki modul ima zbirku mogućnosti koje su na neki način povezane.
Početak rada s NestJS-om
1. Montaža
Instalirajmo NestJS i napravimo projekt s njim slijedeći ove korake:
Kao rezultat toga stvorit će se sljedeća struktura direktorija:
2. kontroleri
Građevinski blokovi Gnijezda su kontrolori. Ovo su mjesta na kojima će se obrađivati ulazni zahtjevi. Možete odrediti put rute pomoću modifikatora HTTP metode (Get, Post, Put, Delete i tako dalje), kao što se vidi u kodu u nastavku.
Nestjs koristi pristup dekoratora i uglavnom je razvijen u Typescriptu, iako također podržava JavaScript. Također možete koristiti validator klase za provjeru valjanosti tijela zahtjeva.
Samo ću napraviti instancu poslužitelja Nestjs i globalno dodati ValidationPipe. Cijevi su samo metode koje se izvršavaju prije kontrolera. Cijevi se također mogu primijeniti na razini metode/argumenta pomoću @UsePipes dekoratora.
3. Pružatelji usluga
Dobavljači su još jedna kritična komponenta Nestjsa. Daleko sam spremao podatke u privremenu varijablu. Zato se tako jednostavan zadatak može postići korištenjem kontrolera.
Međutim, za veću, kompliciraniju logiku, odvajanje i ponovna upotreba koda bilo bi teško. Tada dolaze dobavljači. Možete deklarirati/napraviti pružatelja na vrhu klase pomoću @Injectable dekoratora. Zatim, pomoću pružatelja usluga, možete izvršiti injekciju ovisnosti, bilježenje i druge zadatke.
4. moduli
Nestjs moduli nisu globalni; umjesto toga, imaju dubinu.
Međutim, može se dijeliti i s bilo kojim drugim modulima. Iako, kao i Angular, nudi globalne module, preporučljivije je zadržati usluge/kontrolere u modulu gdje se najčešće koriste u Nestjsu.
NestCLI se koristi za proizvodnju modula većinu vremena, a CLI automatski dodaje dobavljače/kontrolere generirane u kontekstu tog modula. Oni su poznati kao moduli značajki.
5. Filtri izuzetaka
Filtri iznimka su rukovatelji pogreškama koji se pozivaju kada kontroler izbaci iznimku. Automatski upravlja problemom i isporučuje odgovarajuću, korisniku prikladnu poruku o pogrešci.
Mnoge HttpException naslijeđene iznimke osigurava paket @nestjs/common, uključujući NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException i mnoge druge. Možete čak i dizajnirati svoj vlastiti ExceptionFilter.
6. Međuopreme
Funkcija koja se poziva prije rukovatelja rute naziva se međuoprema. Objekti zahtjeva i odgovora, kao i next() funkcija međuopreme u ciklusu zahtjev-odgovor aplikacije, dostupni su funkcijama međuopreme.
Varijabla koja se zove next obično se koristi za identifikaciju sljedeće funkcije međuopreme. Custom Nest Middleware može se implementirati u metodu ili klasu pomoću @Injectable() dekoratora.
7. Stražari
Čuvari su odgovorni samo za jedno. Njihova je odgovornost procijeniti hoće li kontrolor obraditi zahtjev ili ne na temelju specifičnih okolnosti (Konkretno, korisnički definirane logike).
Korisno je za autentifikaciju/autorizaciju i preporučena je metoda u Nestjsu.
Iako se provjera autentičnosti/dopuštenja, itd., može izvesti pomoću međuprograma, to se ne radi u express ili drugim HTTP poslužiteljima jer nemaju povezani jaki kontekst i nemaju razloga znati koja će se metoda koristiti za obradu zahtjeva.
Prednosti
- Okvir se uvelike oslanja na napomene, koje se koriste za proizvodnju bilo čega, od krajnjih točaka do Swagger dokumentacije. Krajnje točke su osnovne i uredne, a napomene općenito olakšavaju razvoj.
- Jednostavno je eksternalizirati module opće namjene i ponovno koristiti kod u mnogim projektima budući da je Nest.js okvir koji se temelji na modulima.
- Angular značajno utječe na strukturu mapa Nest.js. Prilikom dizajniranja usluge Nest, to omogućuje minimalno vrijeme zastoja.
- Komponente imaju svoje direktorije, s korijenom koji sadrži modul aplikacije i glavnu datoteku. Zbog jednostavnosti strukture, više se pozornosti može posvetiti dizajnu krajnjih točaka i njihovih kupaca, a ne strukturi aplikacije.
- Nest, poput Angulara, nudi lijep alat naredbenog retka, Nestjs/cli, koji je dostupan putem Node Package Managera.
Nedostaci
- Nest ima prednost u smislu upotrebe TypeScript-a i Angular integracije, ali mu nedostaje financijska potpora velike korporacije.
- Nedostatak dokumentacije predstavlja najveću prijetnju korisnicima Nesta. Iako okvir ima izvrsnu interakciju s drugim okvirima, dokumentacija je rijetka i ne rješava nikakve potencijalne poteškoće.
- Nest ima prednost u pogledu upotrebe TypeScript-a i Angulara.
Zaključak
NestJS pruža programerima veliku prednost. Za početak razvoja, sve što trebate učiniti je stvoriti novu aplikaciju i možete krenuti. Ovaj okvir odmah pruža značajan poticaj, a također vam pomaže u poduzimanju dodatnih faza uspostavljanjem prikladne arhitekture aplikacije.
Koristi se najsuvremenijim metodama i tehnologijom za proizvodnju aplikacija koje su upravljive i dugotrajne. Može se koristiti za spajanje na GraphQL, WebSockets i konstruiranje mikroservisa.
Ostavi odgovor