Streams (JavaScript)

06/11/2025
Aujourd'hui, on va parler d'une notion super utile dans le monde de JavaScript : les streams.
Qu'est-ce qu'un stream en JavaScript ?
Un stream est une manière de traiter des données en flux, comme un fichier (Manipulation de fichiers) ou une requêtes HTTP. L'idée est simple : au lieu de charger tout le contenu à la fois, vous pouvez lire et écrire des chunks (ou morceaux) de données peu à peu.
Cela permet de gagner en Performances, car vous n'avez pas à charger tout le contenu en mémoire vive d'un coup. C'est particulièrement utile pour les fichiers volumineux ou les requêtes qui prennent du temps à se répondre.
Un exemple de code en TypeScript
Voici un petit exemple de code en TypeScript qui utilise les streams pour lire un fichier texte :
import { createReadStream } from 'fs';
import { Transform, pipeline } from 'stream';
const majuscules = new Transform({
transform(chunk, encoding, callback) {
// Traitement du chunk de données
const processedChunk = chunk.toString().toUpperCase();
callback(null, processedChunk);
},
});
pipeline(createReadStream('example.txt'), majuscules, process.stdout, (error) => {
if (error) {
console.error('Erreur pendant le traitement :', error);
} else {
console.log('Fichier traité avec succès!');
}
});
Dans cet exemple, nous créons un stream de fichier en utilisant la méthode createReadStream de 'fs'. Ensuite, nous créons un stream Transform qui applique une transformation à chaque chunk de données. Dans cet exemple, la transformation consiste à convertir le texte en majuscules.
Enfin, la fonction pipeline relie les streams entre eux (lecture du fichier, transformation, sortie standard), transmet les erreurs et appelle la fonction de rappel une fois tout le fichier traité.
Conclusion
Les streams sont une puissante manière de gérer les données en flux dans JavaScript. Ils permettent de traiter des données de manière asynchrone, ce qui est particulièrement utile pour les fichiers volumineux ou les requêtes qui prennent du temps à se répondre.
Voilà quelques notions du domaine des streams et des pipelines qui vous intéresseront peut-être :
- Transform Streams : Un stream qui applique une transformation à chaque chunk de données, comme le code que j'ai montré plus tôt.
- Duplex Stream : Un stream qui est à la fois une source et une destination, ce qui signifie qu'il peut lire et écrire des données.
- PassThrough Stream : Un stream qui simplement passe les chunks de données sans les modifier.
- Composition de streams : La fonction
stream.compose()combine plusieurs streams en un seul streamDuplex, permettant ainsi de créer des pipelines complexes. - Readable Stream : Un stream qui peut lire des chunks de données, mais pas les écrire.
- Writable Stream : Un stream qui peut écrire des chunks de données, mais pas les lire. Et bien sûr, il y a beaucoup plus à explorer dans le domaine des streams et des pipelines !
Ce contenu vous a servi ? Ajoutez Bob le développeur à vos sources préférées sur Google.
Un bandeau cookie à poser sur votre site ?
ConsentLab est la CMP RGPD qu'on a développée : Google Consent Mode v2, blocage des scripts avant consentement, widget de moins de 5 ko. Plan gratuit, sans carte bancaire.