Увод у НестЈС [+6 Learning Resources]

NestJS: Napredni okvir za Node.js

NestJS predstavlja progresivni okvir za Node.js, dizajniran za kreiranje skalabilnih, efikasnih i pouzdanih serverskih aplikacija.

Cilj NestJS-a je eliminacija neorganizovanih baza kodova. Njegova modularna struktura znatno olakšava organizovanje koda u različite module.

NestJS je izgrađen pomoću TypeScript-a i koristi ExpressJS ispod površine. Programeri koji cene prednosti snažne provere tipova koju nudi TypeScript često biraju NestJS. Ovaj okvir kombinuje različite aspekte funkcionalnog reaktivnog programiranja (FRP), objektno orijentisanog programiranja (OOP) i funkcionalnog programiranja (FP).

Zašto koristiti NestJS?

NestJS je pogodan i za početnike, jer pruža jasnu strukturu i intuitivne alate komandne linije (CLI). Programeri mogu lako postaviti nove funkcionalnosti jednostavnom komandom, koristeći ovaj Node.js okvir.

NestJS nudi module, servise, kontrolere i brojne alate za testiranje kako biste brzo započeli. Takođe, dostupni su različiti šabloni i predlošci koji mogu olakšati razvojni proces.

Kriva učenja za NestJS je prilično blaga za one koji su upoznati sa petljama, sintaksom i uslovima u JavaScript-u i Angularu.

Karakteristike NestJS-a

Izgrađen na TypeScript-u

NestJS koristi TypeScript, nadskup JavaScript-a. TypeScript poboljšava razvojno iskustvo, jer smanjuje potrebu za ručnom proverom grešaka nakon svake izmene koda. TypeScript pruža sve funkcionalnosti JavaScript-a, uz dodatne opcije.

Kontejner za ubrizgavanje zavisnosti

Ubrizgavanje zavisnosti odvaja inicijalizaciju objekata koje koristi klasa od same klase. U ovom scenariju, klasa se naziva „klijent“, a zavisnosti klase se nazivaju „usluge“. Ovaj ugrađeni sistem za ubrizgavanje zavisnosti čini NestJS aplikacije efikasnijim i modularnijim.

Moćan interfejs komandne linije (CLI)

Možete pokretati, razvijati i održavati sve vaše NestJS aplikacije pomoću NestCLI. NestCLI vam omogućava da obavljate razne zadatke, kao što su:

  • Kreiranje skeletona projekta
  • Pokretanje projekta u razvojnom režimu
  • Izgradnja i povezivanje aplikacije za proizvodno okruženje

Modularizacija

Svaka NestJS aplikacija sadrži najmanje jedan modul. „Root“ modul je osnovni modul. U tipičnoj NestJS aplikaciji, svaki logički deo aplikacije nalazi se unutar istog domena (modula). Ovakav pristup olakšava organizovanje komponenti, gde će aplikacija imati više modula sa blisko povezanim funkcionalnostima.

Jedinično testiranje

Automatsko testiranje pruža brojne prednosti, ali proces postavljanja testova može biti prilično kompleksan. NestJS nudi različite alate koji timovima olakšavaju kreiranje i automatizaciju testova. Prednost NestJS-a je kompatibilnost sa raznim alatima za testiranje. Sistem za ubrizgavanje zavisnosti je dostupan i tokom testiranja, što olakšava simulaciju komponenti.

Nezavisan od baze podataka

Možete se lako integrisati sa bilo kojom SQL ili NoSQL bazom podataka, u zavisnosti od vaših potreba i preferencija kada koristite NestJS. Povezivanje NestJS-a sa bazom podataka je vrlo jednostavno, jer je potrebno samo učitati odgovarajući Node.js drajver.

Podrška različitim bibliotekama

NestJS je kompatibilan sa različitim alatima, što ubrzava razvoj aplikacija. Ovaj okvir podržava logovanje, validaciju, keširanje, WebSockets, TypeORM, Mongoose i GraphQL bez dodatne konfiguracije.

Arhitektura i tok rada NestJS-a

NestJS ima troslojnu arhitekturu koja se sastoji od kontrolera, provajdera i modula. Ovaj pristup omogućava programerima da kreiraju jasan kod bez preklapanja.

Izvor slike: betterprogramming

Kontroleri

Kontroleri u NestJS-u služe kao spona između zahteva i odgovora klijenata. Mehanizam rutiranja preusmerava HTTP zahteve na odgovarajuće kontrolere. Okvir koristi dekoratore i klase za kreiranje kontrolera. Svaka metoda klase se mapira na rute kako bi se primio specifičan zahtev.

Provajderi

Provajderi su temelj NestJS-a. Ubrizgavaju se kao zavisnosti i stvaraju veze između različitih objekata. Klase u NestJS-u, kao što su helperi, servisi ili repozitorijumi, mogu se tretirati kao provajderi kada im se doda `@Injectable()` dekorator. Takvi provajderi se mogu ubaciti u klasu putem konstruktora, a NestJS će rešiti zavisnosti.

Moduli

Modul u NestJS-u objedinjuje blisko povezane funkcionalnosti. Svaka NestJS aplikacija ima osnovni modul koji služi kao ulazna tačka. Preporučuje se korišćenje više modula kako bi se osigurala bolja organizacija i čitljivost koda. Nestov `@Module()` dekorator definiše modul i pruža informacije o zavisnostima, kontrolerima i provajderima koji pripadaju tom modulu.

Početak rada sa NestJS-om

Uverite se da su Node.js i npm instalirani. Potrebno vam je okruženje za izvršavanje, a Node.js je idealan za tu svrhu. Potrebna vam je verzija >= 12, osim v13. Možete proveriti da li su Node.js i npm instalirani putem sledećih komandi:

node -v
npm -v

Ako su oba instalirana, dobićete izlaz sličan ovom:

Ako ih nemate, instalirajte ih sa zvanične stranice. Srećom, Node.js i npm se instaliraju zajedno.

  • Instalirajte Nest CLI. Koristite sledeće komande za postavljanje CLI-a i projekta:
npm i -g @nestjs/cli
nest new project-name

Za demonstraciju, odabrali smo naziv projekta „mynestapp“. NestJS vam daje mogućnost da radite sa TypeScript-om ili vanilla JavaScript-om. Odaberite onu opciju koja vam više odgovara i pritisnite Enter. Nakon postavljanja aplikacije, biće kreirana struktura fajlova, a folder „src“ će sadržati osnovne fajlove, kao što je prikazano na ovom snimku ekrana:

  • Pokrenite aplikaciju / vaš prvi „Hello World“

Nakon završetka instalacije, pokrenite sledeće komande da biste pokrenuli razvojni server:

cd mynestapp
npm run start

Upišite http://localhost:3000/ u pretraživač, i trebao bi se prikazati vaš prvi „Hello World“ u NestJS-u.

Prednosti NestJS-a

  • Jednostavan za učenje. NestJS je lako savladati, posebno ako imate iskustva sa Angularom ili osnovno razumevanje JavaScript-a. Detaljna dokumentacija olakšava učenje rada sa ovim moćnim okvirom.
  • Fleksibilan. NestJS se može koristiti za mnoge zadatke. Možete kreirati MVC aplikacije, GraphQL aplikacije, RESTful API-je i veb sokete koristeći ovaj Node.js okvir.
  • Nudi veliki broj modula. Moduli koje podržava zajednica olakšavaju programerima da strukturiraju različite funkcionalnosti prilikom kreiranja serverskih aplikacija.
  • Brz razvoj i dobra arhitektura. Ne morate počinjati sve od nule kada koristite NestJS. Istovremeno, okvir ima solidnu arhitekturu koja olakšava razumevanje vašeg koda.

Nedostaci NestJS-a

  • Ne odgovara svima koji nemaju pozadinu u TypeScript-u i Angularu. NestJS pozajmljuje dosta od Angular arhitekture, i onima bez takvog znanja može trebati vremena da razumeju sintaksu i strukturu.
  • Još uvek nedostaje u nekim oblastima. NestJS je relativno mlad i možda se ne može takmičiti sa nekim uspostavljenim okvirima zasnovanim na Pythonu i GO-u.

Kompanije koje koriste NestJS

#1. Adidas

Adidas, proizvođač obuće i dizajner, je jedna od kompanija koje koriste NestJS. Izgleda da su impresivne karakteristike NestJS-a privukle ovog giganta da ga koristi za svoj backend.

#2. Capgemini

Capgemini je francuska multinacionalna kompanija koja nudi konsultantske, tehnološke, outsourcing i profesionalne usluge. Ova kompanija koristi NestJS u svom tehnološkom steku.

#3. Roche

Roche je multinacionalna zdravstvena kompanija sa dva odeljenja: farmaceutika i dijagnostika. Roche koristi NestJS kao jednu od tehnoloških grupa na svojoj glavnoj veb stranici.

Resursi za učenje

#1. NestJS od nule do heroja

Kurs „NestJS od nule do heroja“ uči programere kako da kreiraju i implementiraju backend aplikacije koristeći TypeScript i Node.js. Kurs pokriva kreiranje API-ja, autorizaciju i autentifikaciju, testiranje Nest aplikacija i korišćenje TypeORM-a za rad sa bazama podataka, kao i mnoge druge teme.

#2. NestJS: Kompletni vodič za programere

Ovaj kurs uči programere kako da kreiraju backend API-je koristeći Nest, TypeScript i TypeORM. Ovaj kompletni vodič pokriva sve od podešavanja NestJS aplikacije, do testiranja i primene. Takođe ćete dobiti dublje razumevanje web okvira NestJS.

#3. Master NestJS

Kurs „Master NestJS“ uči kako da razvijate Node.js aplikacije koristeći TypeScript. Kurs pokriva validaciju i serijalizaciju podataka, kako funkcionišu JWT tokeni, kako se koristi NestCLI i modernu apstrakciju baze podataka, između ostalih tema.

#4. NestJS u praksi (sa MongoDB)

Kurs „NestJS u praksi“ uči sve o NestJS-u, od modula, kontrolera, GuardServisa, pipe-ova i middleware-a. Kurs koristi pristup zasnovan na projektu, gde kodirate i hostujete svoj kod na GitHubu, sa ZIP datotekama za preuzimanje za svaki odeljak.

#5. Nest.js: Progresivni Node.js okvir

Ova knjiga uvodi programere u NestJS i pokazuje kako da iskoriste JavaScript i TypeScript. Knjiga je dizajnirana u formatu koji osigurava da možete postaviti i pokrenuti svoju NestJS aplikaciju u kratkom roku.

#6. Praktični Nest.js: Razvijte čiste MVC web aplikacije

Knjiga „Praktični Nest.js“ koristi pristup zasnovan na projektu za kreiranje online prodavnice koja koristi različite NestJS funkcije. Knjiga sadrži kraće diskusije, savete i korisne fraze prilikom kreiranja NestJS aplikacije.

Zaključak

Pored toga što je moćan Node.js okvir, NestJS je takođe jedan od najpopularnijih TypeScript okvira za serverske aplikacije danas. Činjenica da nudi najbolje prakse kodiranja i standardnu razvojnu arhitekturu učinila ga je privlačnim za mnoge inženjere koji se žele fokusirati na izgradnju poslovne logike prilikom kreiranja aplikacija.