Streams zijn een kernconcept in Node.js voor het beheren van data. Ze worden veel gebruikt in zowel de interne modules van Node.js als in veel populaire NPM pakketten. Ze kunnen grote hoeveelheden data efficiënt verwerken, en ze kunnen complexe taken gemakkelijker te begrijpen en te beheersen maken.
Er zijn vier soorten streams in Node.js:
1. Readable: Gebruikt voor inleesscenario’s
2. Writable: Gebruikt voor uitvoerscenario’s
3. Duplex: Kan zowel inlezen als uitvoeren
4. Transform: Een type Duplex stream waar de output is berekend op basis van de input.
Hieronder is een basisvoorbeeld van hoe je een leesbare en schrijfbare stream in Node.js kunt implementeren:
```
const fs = require(‘fs’);
// Creëer een leesbare stream
let readableStream = fs.createReadStream(‘input.txt’);
// Creëer een schrijfbare stream
let writableStream = fs.createWriteStream(‘output.txt’);
// Lees de data chunk per chunk
readableStream.on(‘data’, function(chunk) {
writableStream.write(chunk);
});
// Of je kunt pipe method gebruiken
readableStream.pipe(writableStream);
```
In dit voorbeeld wordt een leesbare bestandsstream gemaakt die data uit `input.txt` haalt en een schrijfbare bestandsstream die data schrijft naar `output.txt`.
Elke keer als er een nieuw stuk data uit `input.txt` is gelezen (`chunk`), wordt deze aan de `writableStream` gegeven om te worden geschreven naar `output.txt`.
De `pipe` functie wordt gebruikt om leesbare streams naar schrijfbare of transformeerbare streams te sturen. Het beheert automatisch de datastroom voor je, zodat je geen grote hoeveelheden data verliest of overbelast raakt als de outputstream langzamer is dan de inputstream.
Dit is van groot belang bij het werken met grote hoeveelheden data of met services die vertragingen kunnen hebben.