In Node.js, l’incapsulamento dei dati può essere raggiunto attraverso l’uso di moduli e classi.
I moduli permettono di raggruppare codice correlato in un unico file, che può essere importato dove è necessario. Un modulo può esporre funzioni o variabili al codice che lo importa attraverso l’uso dell’oggetto `module.exports` o `exports`.
Ad esempio, potremmo creare un modulo ‘user.js’:
```
let data = {
name: ‘Nome’,
email: ‘Email‘
};
function setName(newName) {
data.name = newName;
}
function setEmail(newEmail) {
data.email = newEmail;
}
module.exports = {
setName,
setEmail
};
```
Poi possiamo importare e usare il modulo ‘user.js’ in un altro file:
```
const user = require(‘./user.js’);
user.setName(‘Nuovo Nome’);
user.setEmail(‘nuovo@email.com’);
```
Le classi offrono un altro livello di incapsulamento, permettendo l’uso di modificatori di accesso come `public`, `private` e `protected`. Possiamo definire campi dati come `private` per impedire l’accesso diretto da fuori la classe.
```
class User {
#name;
#email;
module.exports = User;
```
Questo garantisce che i dati siano accessibili solo attraverso i metodi della classe. È importante notare che l’incapsulamento attraverso le classi è supportato solo in Node.js versione 12 o superiore.