I moduli in Node.js sono una serie di blocchi di codice riutilizzabili che eseguono una specifica funzionalità. L’utilizzo dei moduli nel codice permette una strutturazione piu’ ordinata e efficiente del software e la possibilita’ di riutilizzare parti di codice in diversi progetti senza la necessità di ricrearle da zero.
Ci sono tre tipi di moduli in Node.js:
1. Moduli Core (Core modules): questi sono i moduli preconfezionati di Node.js che vengono installati insieme a Node.js, come il modulo HTTP, il modulo File System, il modulo Path, ecc.
1. Moduli Locali (Local modules): questi sono i moduli personalizzati che vengono creati dall’utente per un uso specifico nel proprio progetto.
1. Moduli di Terze Parti (Third-party modules): questi sono i moduli forniti da terze parti e che possono essere utilizzati nel proprio progetto dopo essere stati installati tramite Node Package Manager(NPM).
Per utilizzare un modulo, è necessario prima includerlo nel file JavaScript utilizzando la funzione “require()”. Ad esempio, se vogliamo includere il modulo HTTP nel nostro progetto, la procedura sarebbe la seguente:
```
var http = require(‘http’);
```
Dopo aver importato il modulo, puoi accedere a tutte le sue funzionalità.
Node.js utilizza il formato di file CommonJS per i moduli. Ogni file JavaScript in un’applicazione di Node.js è un modulo e all’interno di esso, le funzioni e le variabili non sono visibili o accessibili da altri moduli a meno che non vengano esplicitamente esportati.
Per esportare funzioni o variabili da un modulo, si utilizzano “module.exports” o “exports”. Ad esempio:
```
// In myModule.js
var myFunction = function() {
//…
}
exports.myFunction = myFunction; // esporta la funzione
// In another file
var myModule = require(‘./myModule’);
myModule.myFunction(); // utilizza la funzione
```
In questo modo, ogni modulo può definire la sua interfaccia verso l’esterno, decidendo quali funzionalità esporre e quali tenere private.