Guida Completa allo Start di un’applicazione Node.js con NestJS

Riccardo Tartaglia
weBeetle
Published in
4 min readJul 3, 2024

Ciao, developer

Negli ultimi anni, Node.js ha guadagnato una vasta popolarità come piattaforma di sviluppo server-side per le sue prestazioni, la scalabilità e la ricchezza delle sue librerie.

In questo contesto, NestJS si è affermato come uno dei framework più potenti e flessibili per la creazione di applicazioni Node.js, offrendo una struttura basata su moduli, una gestione dei middleware e un’architettura solida e modulare.

In questa guida, esploreremo passo dopo passo come avviare un’applicazione Node.js utilizzando NestJS, per consentirti di iniziare il tuo progetto con il piede giusto.

Installazione di Node.js e NestJS

Il primo passo è installare Node.js sul tuo sistema. Puoi scaricare l’installer appropriato dal sito ufficiale di Node.js e seguire le istruzioni di installazione per il tuo sistema operativo.

Una volta completata l’installazione di Node.js, puoi installare NestJS globalmente utilizzando npm con il seguente comando:

npm install -g @nestjs/cli

Questo ti consentirà di utilizzare il comando `nest` da qualsiasi directory per creare nuovi progetti NestJS.

Creazione di un nuovo progetto

Dopo aver installato il CLI di NestJS, puoi creare un nuovo progetto eseguendo il seguente comando nella directory desiderata:

nest new nome-del-tuo-progetto

Questo comando creerà una nuova directory con il nome specificato e inizializzerà un nuovo progetto NestJS al suo interno.

Struttura del Progetto

Una volta creato il progetto, puoi esplorare la sua struttura di base. Troverai diversi file e directory, tra cui:

`src/`: Questa directory contiene il codice sorgente dell’applicazione.
- `src/main.ts`: Questo è il punto di ingresso principale dell’applicazione, dove viene avviato il server NestJS.
- `src/app.module.ts`: Questo file definisce il modulo radice dell’applicazione NestJS e i suoi componenti.
- `package.json`: Questo file contiene le dipendenze del progetto e altre informazioni utili.

Gestione dei Moduli

NestJS adotta una struttura modulare che favorisce la scalabilità e la manutenibilità delle applicazioni.

NestJS fa largo uso di decoratori, se non conosci questo pattern, ti consiglio di approfondirli qui

Ogni funzionalità dell’applicazione è organizzata in moduli, consentendo una chiara separazione delle responsabilità e facilitando il riutilizzo del codice.

Esploriamo più nel dettaglio la struttura di un modulo in NestJS e come viene gestita all’interno dell’applicazione.

Un modulo in NestJS è una classe annotata con il decoratore `@Module()`. Questo decoratore definisce le dipendenze del modulo, inclusi i controller, i servizi, i provider e gli eventuali moduli importati. Una struttura di base di un modulo potrebbe apparire così:

import type { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
controllers: [CatsController],
providers: [CatsService],
})

export class CatsModule {}

In questo esempio, `CatsModule` è un modulo che dichiara un controller `CatsController` e un servizio `CatsService`.

NestJS utilizza il concetto di Dependency Injection (DI) per gestire le dipendenze tra i moduli. Quando un modulo viene importato in un altro modulo, le sue dipendenze diventano disponibili all’interno del modulo che lo importa.

Questo permette di creare una gerarchia di moduli che si espande a seconda delle necessità dell’applicazione.

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';
import { DogsModule } from './dogs/dogs.module';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
imports: [CatsModule, DogsModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

Nell’esempio sopra, il modulo radice `AppModule` importa i moduli `CatsModule` e `DogsModule`. Questo consente all’applicazione di accedere alle funzionalità fornite da entrambi i moduli.

Benefici della Gestione Modulare

La gestione modulare offre diversi vantaggi significativi, tra cui:

1. Separazione delle Responsabilità: Ogni modulo è responsabile di un’area specifica dell’applicazione, facilitando la comprensione e la manutenibilità del codice.

2. Riutilizzo del Codice: I moduli possono essere facilmente riutilizzati in diverse parti dell’applicazione o in altri progetti.

3. Scalabilità: La struttura modulare favorisce la scalabilità dell’applicazione, consentendo di aggiungere nuovi moduli senza influenzare il codice esistente.

In conclusione, la gestione dei moduli in NestJS è la base per poter

Sfruttando questa struttura, è possibile organizzare il codice in modo efficiente, favorendo la separazione delle responsabilità e il riutilizzo del codice.

Avvio dell’Applicazione

Una volta esplorata la struttura del progetto, puoi avviare l’applicazione eseguendo il seguente comando nella directory del progetto:

npm run start

Questo avvierà il server NestJS e renderà l’applicazione disponibile all’indirizzo locale http://localhost:3000 per impostazione predefinita.

Ricapitolando…

In questa guida, abbiamo esplorato il processo di avvio di un’applicazione Node.js utilizzando il framework NestJS. Abbiamo visto come installare, creare e avviare un nuovo progetto NestJS, esplorare la sua struttura e comprendere la sua modularità.

Logicamente dietro NestJS ci sta un mondo di concetti che magari approfondiremo in qualche prossimo articolo di questo blog.

Spero che questa guida ti abbia fornito le conoscenze necessarie per iniziare il tuo viaggio con NestJS e creare incredibili applicazioni.

Lascia un clap se hai trovato utile questo contenuto, grazie ❤️

--

--

Riccardo Tartaglia
weBeetle

Fullstack Web Developer 🦄 Aiuto i professionisti e le aziende a comprendere i meccanismi della digitalizzazione.