Nel 2021, JavaScript era il linguaggio di programmazione più utilizzato.
Il fascino di questa tecnologia è innegabile, come si vede dal vasto numero di framework che abilitano la programmazione JavaScript.
Ci sono Angular, React e Vue sul front-end, così come Express e Next sul back-end, solo per citarne alcuni.
Con così tanti meravigliosi framework per la programmazione back-end in JavaScript accessibili, potresti pensare perché dovrei cercare qualcosa di diverso piuttosto che semplicemente usare Express o Next.
Forse hai bisogno di avviare rapidamente il processo di sviluppo con un boilerplate decente e l'aggiunta manuale non solo di nuovi controller ma anche di servizi ti fa ammalare.
Oppure vuoi creare un software grande, scalabile e semplice da gestire. O forse desideri semplicemente lavorare in modo più efficiente e conveniente.
Indipendentemente da ciò che è vero nelle tue circostanze, Nest.js può essere la soluzione perfetta per le tue esigenze.
Questo post fornirà approfondimenti NestJS e un'esperienza pratica.
Cos'è NestJS?
NestJS è un framework Node progressivo che è open source, espandibile e adattabile .js framework per la creazione, il coinvolgimento e la sfida di sistemi back-end. Ora è il Nodo con il tasso di crescita più rapido.
Framework TypeScript per js. NestJS viene utilizzato per creare applicazioni scalabili, testabili e connesse liberamente.
Aggiunge scalabilità a Node. I server Js sono stati portati a un livello completamente nuovo. PostgreSQL, MongoDB e MySQL sono tra i database supportati.
NestJS è estensibile perché può essere utilizzato con altre librerie; flessibile grazie al suo ecosistema adattabile a tutti gli effetti. E progressivo poiché supporta le funzionalità JavaScript e i principi di progettazione.
È principalmente influenzato da Angular, React e Vue e viene fornito con l'iniezione di dipendenza integrata.
Caratteristiche
- È semplice da usare, imparare e padroneggiare.
- È gratuito e open-source (licenza MIT)
- Potente Command Line Interface (CLI) per una maggiore produttività e semplicità di sviluppo
- Programmi di unit test semplici da usare
- Viene utilizzato TypeScript, un linguaggio strettamente tipizzato che è un superset di JavaScript.
- Sviluppo e mantenimento di una codebase attiva.
- Supporto per centinaia di moduli specifici del nido che semplificano l'interfaccia con tecnologie e idee popolari come TypeORM, Mongoose, GraphQL, registrazione, convalida, memorizzazione nella cache, WebSocket e altro ancora.
Quali sono gli elementi costitutivi di NestJS?
I componenti dell'edificio delle applicazioni Nest sono elencati di seguito; ce ne sono altri, ma questi tre sono i più significativi. Diamo un'occhiata a loro rapidamente.
1. Controller
I titolari del trattamento sono incaricati di elaborare le richieste in arrivo e di rispondere ai clienti. Riceve particolari richieste HTTP e il sistema di routing determina quale controller riceve quale richiesta.
Quindi redige una risposta adeguata da inviare. Con l'aiuto di classi e decoratori, viene creato un semplice raccoglitore e ogni controller ha il proprio set di percorsi per svolgere varie attività.
2. Fornitori
I fornitori sono un'idea chiave in Nest. Molte delle classi principali di Nest (servizi, repository, fabbriche, helper e così via) possono essere gestite come provider.
La nozione di base di un provider è che può essere iniettato come dipendenza; ciò implica che gli oggetti possono formare varie associazioni tra loro e il ruolo di "collegare" istanze di oggetti può essere principalmente affidato in outsourcing al sistema di runtime Nest.
3. moduli
Un modulo è una classe con il decoratore @Module() che organizza i componenti della struttura dell'applicazione. Ogni applicazione ha un modulo radice che viene utilizzato per costruire il grafico dell'applicazione, che risolve ulteriormente le dipendenze e le interazioni tra il provider e il modulo.
Questo decoratore fornisce metadati a Nest.js per identificare quali componenti, controller o altre risorse verranno utilizzati nel codice dell'applicazione e combinarli in un unico set.
Ogni modulo ha una raccolta di capacità che sono collegate in qualche modo.
Iniziare con NestJS
1. Installazione
Installiamo NestJS e creiamo un progetto con esso seguendo questi passaggi:
Di conseguenza verrà creata la seguente struttura di directory:
2. Controller
Gli elementi costitutivi di Nest sono i controller. Queste sono le posizioni in cui verranno gestite le richieste in entrata. Puoi specificare il percorso del percorso utilizzando i decoratori di modificatori del metodo HTTP (Get, Post, Put, Delete e così via), come mostrato nel codice seguente.
Nestjs utilizza l'approccio decoratore ed è sviluppato principalmente in Typescript, sebbene supporti anche JavaScript. Puoi anche utilizzare un validatore di classe per convalidare il corpo della richiesta.
Creerò solo un'istanza del server Nestjs e aggiungerò ValidationPipe a livello globale. Le pipe sono solo metodi che vengono eseguiti prima dei controller. Le pipe possono essere applicate anche a livello di metodo/argomento utilizzando il decoratore @UsePipes.
3. Fornitori
I provider sono un altro componente fondamentale di Nestjs. Di gran lunga, stavo memorizzando i dati in una variabile temporanea. Ecco perché un'attività così semplice può essere eseguita utilizzando i gestori Controller.
Tuttavia, per una logica più ampia e complicata, la separazione e il riutilizzo del codice sarebbero difficili. Questo è il momento in cui entrano i fornitori. Puoi dichiarare/creare un provider in cima a una classe usando il decoratore @Injectable. Quindi, utilizzando i provider, puoi eseguire l'inserimento delle dipendenze, la registrazione e altre attività.
4. moduli
I moduli Nestjs non sono globali; invece, hanno profondità.
Tuttavia, può essere condiviso anche con qualsiasi altro modulo. Sebbene, come Angular, offra moduli globali, è più consigliabile mantenere i servizi/controller nel modulo in cui sono più comunemente utilizzati in Nestjs.
NestCLI viene utilizzato per produrre moduli per la maggior parte del tempo e i provider/controller generati nel contesto di quel modulo vengono aggiunti automaticamente dalla CLI. Questi sono noti come moduli di funzionalità.
5. Filtri di eccezione
I filtri di eccezione sono gestori di errori che vengono richiamati quando un controller genera un'eccezione. Gestisce automaticamente il problema e fornisce un messaggio di errore appropriato e intuitivo.
Molte eccezioni ereditate da HttpException sono fornite dal pacchetto @nestjs/common, inclusi NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException e molti altri. Puoi persino progettare il tuo ExceptionFilter.
6. Middleware
Una funzione che viene richiamata prima del gestore di route viene chiamata middleware. Gli oggetti richiesta e risposta, così come la funzione middleware next() nel ciclo richiesta-risposta dell'applicazione, sono accessibili alle funzioni middleware.
Una variabile chiamata next viene in genere utilizzata per identificare la funzione middleware successiva. Il middleware Nest personalizzato può essere implementato in un metodo o in una classe utilizzando il decoratore @Injectable().
7. Guardie
Le guardie sono responsabili solo di una cosa. È sua responsabilità valutare se una richiesta sarà trattata o meno dal titolare del trattamento sulla base di circostanze specifiche (in particolare, logica definita dall'utente).
È utile per l'autenticazione/autorizzazione ed è il metodo consigliato in Nestjs.
Sebbene l'autenticazione/autorizzazioni, ecc., possa essere eseguita utilizzando il middleware, non viene eseguita in server HTTP express o altri poiché non hanno un contesto forte correlato e non hanno motivo di sapere quale metodo verrà utilizzato per elaborare la richiesta.
Vantaggi
- Il framework fa molto affidamento sulle annotazioni, che vengono utilizzate per produrre qualsiasi cosa, dagli endpoint alla documentazione di Swagger. Gli endpoint sono semplici e ordinati e le annotazioni facilitano lo sviluppo in generale.
- È semplice esternalizzare moduli generici e riutilizzare il codice in molti progetti poiché Nest.js è un framework basato su moduli.
- La struttura delle cartelle di Nest.js è notevolmente influenzata da Angular. Quando si progetta un servizio Nest, ciò consente tempi di inattività minimi.
- I componenti hanno le proprie directory, con la radice che contiene il modulo dell'applicazione e il file principale. Data la semplicità della struttura, è possibile dedicare maggiore attenzione alla progettazione degli endpoint e dei relativi clienti piuttosto che alla struttura dell'applicazione.
- Nest, come Angular, offre un simpatico strumento da riga di comando, Nestjs/cli, disponibile tramite Node Package Manager.
Svantaggi
- Nest ha un vantaggio in termini di utilizzo di TypeScript e integrazione angolare, ma manca del supporto finanziario di una grande azienda.
- La mancanza di documentazione rappresenta la più grande minaccia per gli utenti Nest. Sebbene il framework abbia eccellenti interazioni con altri framework, la documentazione è scarsa e non affronta potenziali difficoltà.
- Nest ha un vantaggio in termini di utilizzo di TypeScript e Angular.
Conclusione
NestJS offre agli sviluppatori un enorme vantaggio. Per iniziare lo sviluppo, tutto ciò che devi fare è crea una nuova app e sei a posto. Questo framework fornisce immediatamente una spinta significativa, aiutandoti anche a completare fasi aggiuntive stabilendo un'architettura dell'app adeguata.
Utilizza metodi e tecnologie all'avanguardia per produrre applicazioni gestibili e durevoli. Può essere usato per connettersi a GraphQL, WebSocket e costruire microservizi.
Lascia un Commento