In 2021 was JavaScript de meest gebruikte programmeertaal.
De aantrekkingskracht van deze technologie valt niet te ontkennen, zoals blijkt uit het grote aantal frameworks dat JavaScript-programmering mogelijk maakt.
Er zijn Angular, React en Vue aan de voorkant, evenals Express en Next aan de achterkant, om er maar een paar te noemen.
Met zoveel prachtige frameworks voor backend-programmering in JavaScript die toegankelijk zijn, denk je misschien waarom ik naar iets anders zou zoeken in plaats van gewoon Express of Next te gebruiken.
Misschien moet je het ontwikkelingsproces snel opstarten met een degelijke boilerplate, en het handmatig toevoegen van niet alleen nieuwe controllers maar ook services maakt je ziek.
Of u wilt grote, schaalbare software maken die eenvoudig te beheren is. Of misschien wilt u gewoon efficiënter en handiger werken.
Ongeacht wat waar is in uw situatie, Nest.js kan de perfecte oplossing zijn voor uw behoeften.
Dit bericht biedt NestJS-inzichten en praktische ervaring.
Wat is NestJS?
NestJS is een progressief Node-framework dat open-source, uitbreidbaar en aanpasbaar is .js raamwerk voor het bouwen, boeiende en uitdagende backend-systemen. Het is nu de Node met de snelste groeisnelheid.
TypeScript-framework voor js. NestJS wordt gebruikt om applicaties te maken die schaalbaar, testbaar en losjes verbonden zijn.
Het voegt schaalbaarheid toe aan Node. Js-servers zijn naar een heel nieuw niveau getild. PostgreSQL, MongoDB en MySQL behoren tot de ondersteunde databases.
NestJS is uitbreidbaar omdat het kan worden gebruikt met andere bibliotheken; flexibel door zijn aanpasbaar volwaardig ecosysteem. En vooruitstrevend omdat het JavaScript-functies en ontwerpprincipes ondersteunt.
Het wordt voornamelijk beïnvloed door Angular, React en Vue en wordt geleverd met ingebouwde afhankelijkheidsinjectie.
Voordelen
- Het is eenvoudig te gebruiken, te leren en te beheersen.
- Het is gratis en open source (MIT-licentie)
- Krachtige Command Line Interface (CLI) voor verhoogde productiviteit en eenvoudige ontwikkeling
- Unit-testprogramma's die eenvoudig te gebruiken zijn
- TypeScript, een strak getypte taal die een superset is van JavaScript, wordt gebruikt.
- Ontwikkeling en onderhoud van een actieve codebase.
- Ondersteuning voor honderden nestspecifieke modules die het eenvoudig maken om te communiceren met populaire technologieën en ideeën zoals TypeORM, Mongoose, GraphQL, logging, validatie, caching, WebSockets en meer.
Wat zijn de bouwstenen van NestJS?
De bouwcomponenten van Nest-applicaties staan hieronder vermeld; er zijn er nog meer, maar deze drie zijn de belangrijkste. Laten we ze snel bekijken.
1. Controllers
Controllers zijn verantwoordelijk voor het verwerken van inkomende verzoeken en het beantwoorden van klanten. Het ontvangt bepaalde HTTP-verzoeken en het routeringssysteem bepaalt welke controller welk verzoek krijgt.
Vervolgens stelt het een passend antwoord op om te verzenden. Met behulp van klassen en decorateurs wordt een eenvoudige verzamelaar gebouwd en elke controller heeft zijn eigen reeks routes om verschillende taken uit te voeren.
2. Aanbieders
Providers zijn een belangrijk idee in Nest. Veel van de belangrijkste Nest-klassen - services, repositories, fabrieken, helpers, enzovoort - kunnen als providers worden afgehandeld.
Het basisidee van een provider is dat het kan worden geïnjecteerd als een afhankelijkheid; dit houdt in dat objecten verschillende associaties met elkaar kunnen vormen, en de rol van het "bekabelen" van instanties van objecten kan voornamelijk worden uitbesteed aan het Nest-runtime-systeem.
3. modules
Een module is een klasse met de @Module() decorateur die de componenten van de applicatiestructuur organiseert. Elke applicatie heeft een rootmodule die wordt gebruikt om de applicatiegrafiek samen te stellen, die de afhankelijkheden en interacties tussen de provider en de module verder oplost.
Deze decorateur geeft metadata aan Nest.js om te identificeren welke componenten, controllers of andere bronnen in de applicatiecode zullen worden gebruikt en deze te combineren tot één set.
Elke module heeft een verzameling mogelijkheden die op de een of andere manier met elkaar verbonden zijn.
Aan de slag met NestJS
1. Installatie
Laten we NestJS installeren en er een project mee maken door deze stappen te volgen:
Hierdoor ontstaat de volgende mappenstructuur:
2. Controllers
De bouwstenen van het Nest zijn controllers. Dit zijn de locaties waar inkomende verzoeken worden afgehandeld. U kunt het routepad specificeren met behulp van HTTP-methodemodifiers (Get, Post, Put, Delete, enzovoort) decorateurs, zoals te zien is in de onderstaande code.
Nestjs maakt gebruik van de decorateurbenadering en is grotendeels ontwikkeld in Typescript, hoewel het ook JavaScript ondersteunt. U kunt ook een klassenvalidator gebruiken om de aanvraaginstantie te valideren.
Ik ga gewoon een Nestjs-serverinstantie maken en ValidationPipe wereldwijd toevoegen. Pipes zijn slechts methoden die vóór controllers worden uitgevoerd. Pijpen kunnen ook op methode/argument niveau worden toegepast met behulp van de @UsePipes decorateur.
3. Aanbieders
Providers zijn een ander cruciaal onderdeel van Nestjs. Verreweg bewaarde ik gegevens in een tijdelijke variabele. Daarom kan zo'n eenvoudige taak worden uitgevoerd met behulp van controller-handlers.
Voor grotere, meer gecompliceerde logica zou codescheiding en hergebruik echter moeilijk zijn. Dit is wanneer leveranciers binnenkomen. Je kunt een provider declareren/creëren bovenop een klas door de @Injectable decorateur te gebruiken. Vervolgens kunt u met behulp van providers afhankelijkheidsinjectie, logboekregistratie en andere taken uitvoeren.
4. modules
Nestjs-modules zijn niet wereldwijd; in plaats daarvan hebben ze diepte.
Het kan echter ook worden gedeeld met andere modules. Hoewel het, net als Angular, Global Modules biedt, is het raadzaam om Services/Controllers in de module te houden waar ze het meest worden gebruikt in Nestjs.
De NestCLI wordt meestal gebruikt om modules te produceren, en providers/controllers die in de context van die module zijn gegenereerd, worden automatisch toegevoegd door de CLI. Deze staan bekend als functiemodules.
5. Uitzonderingsfilters
Uitzonderingsfilters zijn fouthandlers die worden aangeroepen wanneer een controller een uitzondering genereert. Het beheert het probleem automatisch en levert een passende, gebruiksvriendelijke foutmelding.
Veel overgeërfde uitzonderingen van HttpException worden geleverd door het pakket @nestjs/common, waaronder NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException en vele andere. U kunt zelfs uw eigen ExceptionFilter ontwerpen.
6. Middelware
Een functie die vóór de routehandler wordt aangeroepen, wordt middleware genoemd. De request- en response-objecten, evenals de next() middleware-functie in de request-response-cyclus van de toepassing, zijn toegankelijk voor middleware-functies.
Een variabele met de naam next wordt meestal gebruikt om de volgende middleware-functie te identificeren. Aangepaste Nest-middleware kan worden geïmplementeerd in een methode of een klasse met behulp van de @Injectable() decorateur.
7. Bewakers
Bewakers zijn maar voor één ding verantwoordelijk. Het is hun verantwoordelijkheid om te beoordelen of een verzoek al dan niet door de verwerkingsverantwoordelijke zal worden verwerkt op basis van specifieke omstandigheden (met name door de gebruiker gedefinieerde logica).
Het is handig voor authenticatie/autorisatie en is de aanbevolen methode in Nestjs.
Hoewel authenticatie/permissies, enz. kunnen worden gedaan met behulp van middleware, wordt dit niet gedaan in express- of andere HTTP-servers, omdat ze geen gerelateerde sterke context hebben en geen reden hebben om te weten welke methode zal worden gebruikt om het verzoek te verwerken.
voordelen
- Het raamwerk is sterk afhankelijk van annotaties, die worden gebruikt om alles te produceren, van eindpunten tot Swagger-documentatie. De eindpunten zijn eenvoudig en netjes, en de annotaties vergemakkelijken de ontwikkeling in het algemeen.
- Het is eenvoudig om modules voor algemene doeleinden te externaliseren en code in veel projecten te hergebruiken, aangezien Nest.js een op modules gebaseerd raamwerk is.
- De mappenstructuur van Nest.js wordt aanzienlijk beïnvloed door Angular. Bij het ontwerpen van een Nest-service zorgt dit voor minimale downtime.
- Componenten hebben hun eigen mappen, waarbij de root de toepassingsmodule en het hoofdbestand bevat. Door de eenvoud van de structuur kan meer aandacht worden besteed aan het ontwerp van endpoints en hun klanten in plaats van aan de structuur van de applicatie.
- Nest biedt, net als Angular, een mooie opdrachtregeltool, Nestjs/cli, die beschikbaar is via Node Package Manager.
Nadelen
- Nest heeft een voordeel wat betreft TypeScript-gebruik en Angular-integratie, maar het mist de financiële steun van een groot bedrijf.
- Het ontbreken van documentatie vormt de grootste bedreiging voor Nest-gebruikers. Hoewel het raamwerk uitstekende interacties heeft met andere raamwerken, is de documentatie schaars en worden eventuele problemen niet behandeld.
- Nest heeft een voordeel op het gebied van TypeScript-gebruik en Angular.
Conclusie
NestJS biedt ontwikkelaars een enorme voorsprong. Om met de ontwikkeling te beginnen, hoeft u alleen maar te doen een nieuwe app maken en je bent klaar om te gaan. Dit raamwerk geeft direct een flinke boost en helpt je ook bij het maken van verdere stappen door een passende app-architectuur op te zetten.
Het maakt gebruik van geavanceerde methoden en technologie om toepassingen te produceren die zowel beheersbaar als duurzaam zijn. Het kan worden gebruikt om verbinding te maken met GraphQL, WebSockets en microservices te bouwen.
Laat een reactie achter