2021 var JavaScript det mest använda programmeringsspråket.
Attraktionskraften hos denna teknik är obestridlig, vilket framgår av det stora antalet ramverk som möjliggör JavaScript-programmering.
Det finns Angular, React och Vue på frontend, samt Express och Next på backend, för att nämna några.
Med så många underbara ramverk för backend-programmering i JavaScript tillgängliga, kanske du tänker varför jag skulle söka efter något annat istället för att bara använda Express eller Next.
Kanske måste du snabbt komma igång med utvecklingsprocessen med en anständig platta, och att manuellt lägga till inte bara nya styrenheter utan även tjänster gör dig sjuk.
Eller så vill du skapa stor, skalbar programvara som är enkel att hantera. Eller så kanske du helt enkelt vill arbeta på ett mer effektivt och bekvämt sätt.
Oavsett vad som är sant i din situation kan Nest.js vara den perfekta lösningen för dina behov.
Det här inlägget kommer att ge NestJS-insikter såväl som praktisk erfarenhet.
Vad är NestJS?
NestJS är ett progressivt Node-ramverk som är öppen källkod, expanderbart och anpassningsbart .js ramverk för att bygga, engagera och utmana backend-system. Det är nu den nod som har den snabbaste tillväxttakten.
TypeScript-ramverk för js. NestJS används för att skapa applikationer som är skalbara, testbara och löst anslutna.
Det lägger till skalbarhet till Node. Js-servrar har tagits till en helt ny nivå. PostgreSQL, MongoDB och MySQL är bland de databaser som stöds.
NestJS är utbyggbart eftersom det kan användas med andra bibliotek; flexibel på grund av dess anpassningsbara fullfjädrade ekosystem. Och progressiv eftersom den stöder JavaScript-funktioner och designprinciper.
Den påverkas främst av Angular, React och Vue och kommer med inbyggd beroendeinjektion.
Funktioner
- Det är enkelt att använda, lära sig och bemästra.
- Det är gratis och öppen källkod (MIT -licens)
- Kraftfullt kommandoradsgränssnitt (CLI) för ökad produktivitet och enkel utveckling
- Enhetstestningsprogram som är enkla att använda
- TypeScript, ett noggrant skrivet språk som är en superset av JavaScript, används.
- Utveckling och underhåll av en aktiv kodbas.
- Stöd för hundratals bospecifika moduler som gör det enkelt att använda gränssnitt med populära tekniker och idéer som TypeORM, Mongoose, GraphQL, loggning, validering, cachning, WebSockets och mer.
Vilka är byggstenarna i NestJS?
Byggkomponenterna i Nest-applikationer listas nedan; det finns andra, men dessa tre är de mest betydelsefulla. Låt oss ta en titt på dem snabbt.
1. controllers
Kontrollanter är ansvariga för att behandla inkommande förfrågningar och svara på kunder. Den tar emot särskilda HTTP-förfrågningar, och routingsystemet bestämmer vilken styrenhet som får vilken begäran.
Den utarbetar sedan ett lämpligt svar att skicka ut. Med hjälp av klasser och dekoratörer byggs en enkel samlare och varje kontrollenhet har sin egen uppsättning vägar för att utföra olika uppgifter.
2. Leverantörer
Leverantörer är en nyckelidé i Nest. Många av de centrala Nest-klasserna – tjänster, förråd, fabriker, hjälpare och så vidare – kan hanteras som leverantörer.
En leverantörs grundläggande uppfattning är att det kan injiceras som ett beroende; detta innebär att objekt kan bilda olika associationer med varandra, och rollen att "koppla upp" instanser av objekt kan huvudsakligen läggas ut på Nest-runtime-systemet.
3. moduler
En modul är en klass med @Module()-dekoratören som organiserar komponenterna i programmets struktur. Varje applikation har en rotmodul som används för att konstruera applikationsdiagrammet, vilket ytterligare löser beroenden och interaktionerna mellan leverantören och modulen.
Den här dekoratören ger metadata till Nest.js för att identifiera vilka komponenter, kontroller eller andra resurser som kommer att användas i applikationskoden och kombinera dem till en enda uppsättning.
Varje modul har en samling funktioner som är sammankopplade på något sätt.
Komma igång med NestJS
1. Installation
Låt oss installera NestJS och skapa ett projekt med det genom att följa dessa steg:
Följande katalogstruktur kommer att skapas som ett resultat av detta:
2. controllers
Boets byggstenar är kontroller. Det här är de platser där inkommande förfrågningar kommer att hanteras. Du kan ange ruttsökvägen med hjälp av HTTP-metodens modifierare (Hämta, Lägg upp, Lägg, Ta bort och så vidare) dekoratorer, som visas i koden nedan.
Nestjs använder sig av dekorationsmetoden och är mestadels utvecklad i Typescript, även om den också stöder JavaScript. Du kan också använda en klassvalidator för att validera förfrågningskroppen.
Jag ska bara göra en Nestjs-serverinstans och lägga till ValidationPipe globalt. Pipes är bara metoder som körs före Controllers. Rör kan också appliceras på metod-/argumentnivå med @UsePipes dekorator.
3. Leverantörer
Leverantörer är en annan viktig komponent i Nestjs. Överlägset lagrade jag data i en temporär variabel. Det är därför en så enkel uppgift kan utföras med Controller-hanterare.
Men för större, mer komplicerad logik skulle kodseparering och återanvändning vara svårt. Det är då leverantörer kommer in. Du kan deklarera/skapa en leverantör ovanpå en klass genom att använda @Injectable-dekoratören. Sedan, med hjälp av leverantörer, kan du göra beroendeinjektion, loggning och andra uppgifter.
4. moduler
Nestjs-moduler är inte globala; istället har de djup.
Den kan dock delas med andra moduler också. Även om det, precis som Angular, erbjuder globala moduler, är det mer tillrådligt att behålla tjänster/kontroller i den modul där de oftast används i Nestjs.
NestCLI används för att producera moduler för det mesta, och leverantörer/kontrollanter som genereras i den modulens sammanhang läggs automatiskt till av CLI. Dessa är kända som funktionsmoduler.
5. Undantagsfilter
Undantagsfilter är felhanterare som anropas när en Controller kastar ett undantag. Den hanterar automatiskt problemet och levererar ett lämpligt, användarvänligt felmeddelande.
Många HttpException ärvda undantag tillhandahålls av paketet @nestjs/common, inklusive NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException och många andra. Du kan till och med designa ditt eget ExceptionFilter.
6. Mellanvaror
En funktion som anropas innan rutthanteraren kallas middleware. Begäran och svarsobjekten, såväl som nästa() middleware-funktion i programmets begäran-svar-cykel, är tillgängliga för middleware-funktioner.
En variabel som kallas next används vanligtvis för att identifiera nästa middleware-funktion. Custom Nest-mellanvara kan implementeras i en metod eller en klass med hjälp av @Injectable()-dekoratorn.
7. Vakter
Väktare ansvarar bara för en sak. Det är deras ansvar att bedöma om en begäran kommer att behandlas av den registeransvarige eller inte baserat på specifika omständigheter (specifikt användardefinierad logik).
Det är användbart för autentisering/auktorisering och är den rekommenderade metoden i Nestjs.
Även om autentisering/behörigheter etc. kan göras med hjälp av mellanprogram, görs det inte i express- eller andra HTTP-servrar eftersom de inte har ett relaterat starkt sammanhang och inte har någon anledning att veta vilken metod som kommer att användas för att behandla begäran.
Fördelar
- Ramverket är starkt beroende av annoteringar, som används för att producera allt från slutpunkter till Swagger-dokumentation. Slutpunkterna är grundläggande och snygga, och kommentarerna underlättar utvecklingen i allmänhet.
- Det är enkelt att externisera moduler för allmänna ändamål och återanvända kod i många projekt eftersom Nest.js är ett modulbaserat ramverk.
- Nest.js mappstruktur påverkas avsevärt av Angular. När du designar en Nest-tjänst tillåter detta minimal stilleståndstid.
- Komponenter har sina egna kataloger, med roten som innehåller applikationsmodulen och huvudfilen. På grund av strukturens enkelhet kan mer uppmärksamhet ägnas åt utformningen av endpoints och deras kunder snarare än applikationens struktur.
- Nest, precis som Angular, erbjuder ett trevligt kommandoradsverktyg, Nestjs/cli, som är tillgängligt via Node Package Manager.
Nackdelar
- Nest har en fördel när det gäller TypeScript-användning och vinkelintegration, men det saknar ekonomiskt stöd från ett stort företag.
- Bristen på dokumentation utgör det största hotet mot Nest-användare. Även om ramverket har utmärkta interaktioner med andra ramverk är dokumentationen sparsam och tar inte upp några potentiella svårigheter.
- Nest har en fördel när det gäller TypeScript-användning och Angular.
Slutsats
NestJS ger utvecklare ett stort steg framåt. För att börja utveckla är allt du behöver göra skapa en ny app och du är bra att gå. Detta ramverk ger en betydande ökning direkt, samtidigt som det hjälper dig att ta ytterligare steg genom att etablera en lämplig apparkitektur.
Den använder sig av banbrytande metoder och teknologi för att producera applikationer som är både hanterbara och långvariga. Den kan användas för att ansluta till GraphQL, WebSockets och konstruera mikrotjänster.
Kommentera uppropet