Lær NestJS: Bygg skalerbare Node.js-apper med TypeScript

Introduksjon til NestJS: Et robust rammeverk for serverutvikling

NestJS representerer et avansert Node.js-rammeverk, designet for å konstruere skalerbare, effektive og pålitelige serverapplikasjoner. Det er et kraftig verktøy for utviklere som søker struktur og orden i kodebasen sin.

En sentral egenskap ved NestJS er dens modulære arkitektur. Denne tilnærmingen fremmer organisering av koden i selvstendige enheter, noe som forbedrer vedlikehold og gjenbruk. Rammeverket er bygget på TypeScript og benytter ExpressJS under overflaten, noe som gjør det tiltrekkende for utviklere som verdsetter TypeScripts robuste typekontroll.

NestJS forener prinsipper fra funksjonell reaktiv programmering (FRP), objektorientert programmering (OOP) og funksjonell programmering (FP), og gir dermed en allsidig utviklingsopplevelse.

Hvorfor velge NestJS?

NestJS er kjent for sin brukervennlighet, spesielt for nybegynnere. Med en klar struktur og intuitive kommandolinjeverktøy (CLI), kan utviklere raskt sette opp nye funksjoner med enkle kommandoer. Dette akselererer utviklingsprosessen og reduserer kompleksiteten.

NestJS tilbyr ferdige moduler, tjenester, kontrollere og testoppsett, som gjør det enkelt å komme i gang. I tillegg finnes det en rekke maler og startpakker som forenkler utviklingsarbeidet ytterligere. For de som er kjent med JavaScript og Angular, vil læringskurven for NestJS være relativt smidig.

Kjennetegn ved NestJS

Utviklet med TypeScript

NestJS er basert på TypeScript, et supersett av JavaScript. TypeScript forbedrer utviklingsopplevelsen med sin statiske typing, som minimerer manuelle feilsøkingsprosesser. TypeScript inneholder alle funksjonene til JavaScript, i tillegg til egne utvidelser.

Dependency Injection (DI)

Dependency Injection (avhengighetsinjeksjon) skiller initialiseringen av objekter fra klassene som bruker dem. Her er klassen kjent som «klienten» mens klasseavhengighetene er «tjenester». Denne innebygde DI-mekanismen i NestJS øker applikasjonenes effektivitet og modularitet.

Kraftig kommandolinjegrensesnitt (CLI)

Med NestCLI kan man initialisere, utvikle og vedlikeholde NestJS-applikasjoner. NestCLI tilbyr en rekke funksjoner, inkludert:

  • Opprettelse av prosjektstruktur
  • Kjøring av prosjekt i utviklingsmodus
  • Bygging og pakking av applikasjonen for produksjonssetting

Modularisering

Hver NestJS-applikasjon består av minst én modul. Rotmodulen fungerer som det fundamentale elementet. I en typisk NestJS-applikasjon vil hver logiske del være organisert innenfor en egen modul. Dette fremmer god struktur og gjør det enklere å organisere applikasjoner med mange moduler.

Enhetstesting

Automatisert testing er avgjørende, men kan være en kompleks oppgave. NestJS tilbyr funksjoner som forenkler testing, og er kompatibel med ulike testverktøy. NestJS’ dependency injection-system gjør det også lett å mocke komponenter under testing.

Databaseagnostisk

Med NestJS kan du integrere deg med en hvilken som helst SQL- eller NoSQL-database. Det er enkelt å koble til en database ved å installere den nødvendige Node.js-driveren.

Støtte for diverse biblioteker

NestJS samarbeider med en rekke verktøy, noe som bidrar til raskere applikasjonsutvikling. Rammeverket støtter logging, validering, caching, WebSockets, TypeORM, Mongoose og GraphQL uten behov for omfattende konfigurasjon.

Arkitektur og arbeidsflyt i NestJS

NestJS har en trelagsarkitektur med kontrollere, leverandører og moduler. Dette gir utviklere muligheten til å skrive ren, strukturert kode.

Bildekilde: bedre programmering

Kontrollere

Kontrollere i NestJS håndterer kommunikasjonen mellom klientforespørsler og serversvar. Når en HTTP-forespørsel kommer, dirigerer rutingmekanismen den til den relevante kontrolleren. Kontrollere bygges med klasser og dekoratører, hvor hver metode er tilknyttet en spesifikk rute.

Leverandører

Leverandører er essensielle i NestJS og administreres som avhengigheter. Klasser som hjelpere, tjenester eller repositories behandles som leverandører når `@Injectable()`-dekoratoren er brukt. Leverandørene injiseres deretter i klasser gjennom konstruktøren, og NestJS håndterer avhengighetene.

Moduler

En modul i NestJS grupperer sammen relaterte funksjoner. Hver NestJS-applikasjon har en rotmodul som tjener som startpunkt. For en mer organisert og lesbar kodebase, anbefales det å bruke flere moduler. NestJS’ `@Module()`-dekorator definerer en modul og spesifiserer dens avhengigheter, kontrollere og leverandører.

Kom i gang med NestJS

Før du begynner, må du ha Node.js og npm installert (versjon >= 12, men ikke v13). Sjekk om du har Node.js og npm installert med følgende kommandoer:

node -v
npm -v

Hvis installert, vil du se et resultat lignende dette:

Hvis du ikke har Node.js og npm, kan du installere dem fra de offisielle sidene. Installasjonen av Node.js inkluderer vanligvis npm.

  • Installer Nest CLI med følgende kommandoer:
npm i -g @nestjs/cli
nest new project-name

For å demonstrere, la oss kalle prosjektet vårt «mynestapp». Du kan velge å jobbe med TypeScript eller Vanilla JavaScript. Etter at appen er generert, vil filstrukturen være klar, med «src»-mappen og dens kjernefiler.

  • Kjør applikasjonen / din første «Hei Verden»

For å starte utviklingsserveren, kjør disse kommandoene:

cd mynestapp
npm run start

Gå til http://localhost:3000/ i nettleseren din, og din første «Hello World» på NestJS skal vises.

Fordeler med NestJS

  • Lett å lære: NestJS er relativt enkelt å lære, spesielt for de med erfaring fra Angular eller JavaScript. Den omfattende dokumentasjonen bidrar også til en smidig læringsprosess.
  • Fleksibelt: NestJS er allsidig og kan brukes til å utvikle MVC-applikasjoner, GraphQL-applikasjoner, RESTful APIer og web-sockets.
  • Stort utvalg av moduler: Fellesskapsstøttede moduler forenkler utviklingen av serverapplikasjoner.
  • Rask utvikling og god arkitektur: NestJS» arkitektur gjør det enkelt å utvikle og vedlikeholde koden.

Ulemper med NestJS

  • Krever kjennskap til TypeScript og Angular: Personer uten denne bakgrunnen kan oppleve en brattere læringskurve.
  • Fortsatt i utvikling: NestJS er et relativt ungt rammeverk, og kan fortsatt mangle funksjoner som finnes i mer etablerte alternativer.

Selskaper som bruker NestJS

#1. Adidas

Adidas, en ledende produsent av sko og sportsutstyr, benytter NestJS i sin teknologistabel. Dette viser NestJS» evne til å håndtere komplekse applikasjoner.

#2. Capgemini

Capgemini, et globalt konsulentselskap, bruker også NestJS, noe som understreker rammeverkets pålitelighet og fleksibilitet.

#3. Roche

Roche, et internasjonalt helseselskap, bruker NestJS i deler av sin teknologiinfrastruktur.

Læringsressurser

#1. NestJS Zero to Hero

Dette kurset viser hvordan man lager og distribuerer bedriftsklare backend-applikasjoner med TypeScript og Node.js. Det dekker API-utvikling, autentisering, enhetstesting og databaseinteraksjon med TypeORM.

#2. NestJS: The Complete Developer’s Guide

Dette omfattende kurset gir en fullstendig gjennomgang av NestJS, fra oppsett til distribusjon. Du vil lære å lage APIer med TypeScript og TypeORM.

#3. Master NestJS

Dette kurset fokuserer på utvikling av bedriftsklare Node.js-applikasjoner med TypeScript. Det dekker emner som validering, dataserialisering, JWT-tokens og moderne databaseabstraksjon.

#4. NestJs in Practice (med MongoDB)

Dette kurset tar en prosjektbasert tilnærming til å lære NestJS. Det dekker moduler, kontrollere, guards, tjenester, pipes og middleware, med nedlastbare filer for hvert trinn.

#5. Nest.js: Et progressivt Node.js-rammeverk

Denne boken gir en innføring i NestJS og viser hvordan man kan utnytte JavaScript og TypeScript. Boken presenterer en steg-for-steg-metode for å sette opp og kjøre en NestJS-app.

#6. Practical Nest.js: Develop Clean MVC Web Applications

Denne boken bruker en prosjektbasert tilnærming for å bygge en nettbutikk med NestJS. Den gir tips, råd og diskusjoner mens du jobber med prosjektet.

Oppsummering

NestJS er et kraftig og populært TypeScript-basert rammeverk for utvikling av serverapplikasjoner. Det tilbyr gode utviklingspraksiser og en standardisert arkitektur, noe som gir utviklere mulighet til å fokusere på forretningslogikk. Med sin modulære struktur og omfattende funksjoner, er NestJS et attraktivt valg for utviklere som ønsker et robust rammeverk for serverutvikling.