2021. godine JavaScript je bio najrašireniji programski jezik.
Privlačnost ove tehnologije je neosporna, što se vidi iz ogromnog broja okvira koji omogućavaju JavaScript programiranje.
Postoje Angular, React i Vue na frontendu, kao i Express i Next na backendu, da spomenemo neke.
Uz toliko divnih okvira za pozadinsko programiranje u JavaScriptu koji su dostupni, možda mislite zašto bih tražio nešto drugačije umjesto jednostavnog korištenja Expressa ili Next.
Možda trebate brzo pokrenuti proces razvoja s pristojnim šablonom, a ručnim dodavanjem ne samo novih kontrolera već i usluga postaje vam loše.
Ili želite da kreirate veliki, skalabilan softver kojim je jednostavno upravljati. Ili možda jednostavno želite da radite na efikasniji i praktičniji način.
Bez obzira na to što je tačno u vašim okolnostima, Nest.js može biti savršeno rješenje za vaše potrebe.
Ovaj post će pružiti uvid u NestJS, kao i praktično iskustvo.
Šta je NestJS?
NestJS je progresivni Node okvir koji je otvorenog koda, proširiv i prilagodljiv .Js okvir za izgradnju, angažovanje i izazovne pozadinske sisteme. To je sada čvor sa najbržom stopom rasta.
TypeScript okvir za js. NestJS se koristi za kreiranje aplikacija koje su skalabilne, testirane i slabo povezane.
To dodaje skalabilnost Nodeu. Js serveri su podignuti na potpuno novi nivo. PostgreSQL, MongoDB i MySQL su među podržanim bazama podataka.
NestJS je proširiv jer se može koristiti sa drugim bibliotekama; fleksibilan zbog svog prilagodljivog potpuno razvijenog ekosistema. I progresivan jer podržava JavaScript funkcije i principe dizajna.
Na njega prvenstveno utiču Angular, React i Vue i dolazi sa ugrađenom injekcijom zavisnosti.
Značajke
- Jednostavan je za korištenje, učenje i savladavanje.
- Besplatno je i Open-source (MIT licenca)
- Moćno sučelje komandne linije (CLI) za povećanu produktivnost i jednostavnost razvoja
- Programi za testiranje jedinica koji su jednostavni za korištenje
- Koristi se TypeScript, čvrsto otkucani jezik koji je nadskup JavaScripta.
- Razvoj i održavanje aktivne kodne baze.
- Podrška za stotine modula specifičnih za gnijezdo koji olakšavaju povezivanje s popularnim tehnologijama i idejama kao što su TypeORM, Mongoose, GraphQL, evidentiranje, validacija, keširanje, WebSockets i još mnogo toga.
Koji su gradivni blokovi NestJS-a?
Komponente izgradnje Nest aplikacija su navedene 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 sistem rutiranja određuje koji kontroler koji zahtjev prima.
Zatim sastavlja odgovarajući odgovor za slanje. Uz pomoć klasa i dekoratora, napravljen je jednostavan kolektor i svaki kontroler ima svoj set ruta za obavljanje različitih zadataka.
2. Provajderi
Dobavljači su ključna ideja u Nestu. Mnoge osnovne Nest klase — usluge, spremišta, fabrike, pomoćnici i tako dalje — mogu se koristiti kao dobavljači.
Osnovna ideja provajdera je da se može ubaciti kao zavisnost; ovo implicira da objekti mogu formirati različite asocijacije jedni s drugima, a uloga "povezivanja" instanci objekata može se uglavnom prenijeti na Nest runtime sistem.
3. Moduli
Modul je klasa sa @Module() dekoratorom koji organizuje komponente strukture aplikacije. Svaka aplikacija ima osnovni modul koji se koristi za izradu grafa aplikacije, koji dalje rješava ovisnosti i interakcije između provajdera i modula.
Ovaj dekorater daje metapodatke Nest.js-u kako bi se identifikovale koje komponente, kontroleri ili drugi resursi će se koristiti u kodu aplikacije i kombinovati ih u jedan skup.
Svaki modul ima kolekciju mogućnosti koje su na neki način povezane.
Početak rada s NestJS-om
1. instalacija
Hajde da instaliramo NestJS i napravimo projekat sa njim prateći ove korake:
Kao rezultat ovoga stvorit će se sljedeća struktura direktorija:
2. Kontroleri
Građevinski blokovi Nesta su kontrolori. Ovo su lokacije na kojima će se obrađivati ulazni zahtjevi. Možete odrediti putanju rute pomoću modifikatora HTTP metoda (Get, Post, Put, Delete i tako dalje), kao što se vidi u kodu ispod.
Nestjs koristi pristup dekoratera i uglavnom je razvijen u Typescript-u, iako podržava i JavaScript. Također možete koristiti validator klase za provjeru valjanosti tijela zahtjeva.
Samo ću napraviti instancu Nestjs servera i dodati ValidationPipe globalno. Cijevi su samo metode koje se izvršavaju prije kontrolera. Cijevi se također mogu primijeniti na nivou metode/argumenta pomoću @UsePipes dekoratora.
3. Provajderi
Dobavljači su još jedna kritična komponenta Nestjs-a. Do sada sam pohranjivao podatke u privremenu varijablu. Zbog toga se tako jednostavan zadatak može postići korištenjem kontrolera.
Međutim, za veću, složeniju logiku, odvajanje koda i ponovna upotreba bi bili teški. Tada dolaze dobavljači. Možete deklarirati/kreirati dobavljača na vrhu klase korištenjem @Injectable dekoratora. Zatim, koristeći provajdere, možete obaviti injekciju ovisnosti, evidentiranje i druge zadatke.
4. Moduli
Nestjs moduli nisu globalni; umjesto toga, imaju dubinu.
Međutim, može se dijeliti i sa 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 Nestjs-u.
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 funkcija.
5. Filteri izuzetaka
Filteri izuzetaka su rukovaoci grešaka koji se pozivaju kada kontroler izbaci izuzetak. Automatski upravlja problemom i isporučuje odgovarajuću, korisniku prilagođenu poruku o grešci.
Mnoge HttpException naslijeđene izuzetke pruža paket @nestjs/common, uključujući NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException i mnoge druge. Možete čak i dizajnirati svoj vlastiti ExceptionFilter.
6. Middleware
Funkcija koja se poziva prije rukovanja rutom 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. Prilagođeni međuoprema za Nest može se implementirati u metodu ili klasu koristeći @Injectable() dekorator.
7. Stražari
Čuvari su odgovorni samo za jedno. Njihova je odgovornost da procijene da li će kontrolor obraditi zahtjev ili ne na osnovu specifičnih okolnosti (konkretno, korisnički definirane logike).
To je korisno za autentifikaciju/autorizaciju i preporučena je metoda u Nestjs-u.
Iako se autentifikacija/dozvole, itd., mogu obaviti korištenjem međuverskog softvera, to se ne radi u express ili drugim HTTP serverima jer nemaju povezani jaki kontekst i nemaju razloga da znaju koja će metoda biti korištena za obradu zahtjeva.
prednosti
- Okvir se u velikoj mjeri oslanja na napomene, koje se koriste za proizvodnju bilo čega, od krajnjih tačaka do Swagger dokumentacije. Krajnje tačke su osnovne i uredne, a napomene općenito olakšavaju razvoj.
- Jednostavno je eksternalizirati module opšte namjene i ponovo koristiti kod u mnogim projektima budući da je Nest.js okvir zasnovan na modulima.
- Angular značajno utiče na strukturu foldera Nest.js. Prilikom dizajniranja usluge Nest, ovo omogućava minimalno vrijeme zastoja.
- Komponente imaju svoje direktorije, s korijenom koji sadrži modul aplikacije i glavnu datoteku. Zbog jednostavnosti strukture, više pažnje se može posvetiti dizajnu krajnjih tačaka i njihovih kupaca, a ne strukturi aplikacije.
- Nest, poput Angulara, nudi lijep alat naredbene linije, Nestjs/cli, koji je dostupan preko Node Package Managera.
nedostaci
- Nest ima prednost u pogledu upotrebe TypeScript-a i Angular integracije, ali mu nedostaje finansijska podrška velike korporacije.
- Nedostatak dokumentacije predstavlja najveću prijetnju korisnicima Nesta. Iako okvir ima odličnu interakciju sa drugim okvirima, dokumentacija je oskudna i ne bavi se potencijalnim poteškoćama.
- Nest ima prednost u pogledu upotrebe TypeScript-a i Angular-a.
zaključak
NestJS pruža programerima veliku prednost. Da biste započeli razvoj, sve što trebate učiniti je kreirajte novu aplikaciju i spremni ste. Ovaj okvir odmah pruža značajan poticaj, a istovremeno vam pomaže u prelasku u dodatne faze uspostavljanjem odgovarajuće arhitekture aplikacije.
Koristi najsavremenije metode i tehnologiju za proizvodnju aplikacija koje su upravljive i dugotrajne. Može se koristiti za povezivanje na GraphQL, WebSockets i konstruisanje mikroservisa.
Ostavite odgovor