Maison >interface Web >js tutoriel >Maîtriser les flux et pipelines Node.js

Maîtriser les flux et pipelines Node.js

DDD
DDDoriginal
2024-09-19 06:15:331089parcourir

Mastering Node.js Streams and Pipelines

Les flux sont le super pouvoir de Node.js pour gérer efficacement de grands ensembles de données. Passons aux flux et aux pipelines.

Pourquoi Streams ?

  1. Efficacité de la mémoire
  2. Efficacité du temps
  3. Composabilité

Types de flux

  1. Lisible
  2. Écrit
  3. Duplex
  4. Transformer

Utilisation de base du flux

const fs = require('fs');

const readStream = fs.createReadStream('big.file');
const writeStream = fs.createWriteStream('output.file');

readStream.on('data', (chunk) => {
  writeStream.write(chunk);
});

readStream.on('end', () => {
  writeStream.end();
});

Entrez dans les pipelines

Les pipelines simplifient la composition des flux et la gestion des erreurs.

const { pipeline } = require('stream/promises');
const fs = require('fs');
const zlib = require('zlib');

async function compressFile(input, output) {
  await pipeline(
    fs.createReadStream(input),
    zlib.createGzip(),
    fs.createWriteStream(output)
  );
  console.log('Compression complete');
}

compressFile('big.file', 'big.file.gz').catch(console.error);

Flux de transformation personnalisés

const { Transform } = require('stream');

const upperCaseTransform = new Transform({
  transform(chunk, encoding, callback) {
    this.push(chunk.toString().toUpperCase());
    callback();
  }
});

pipeline(
  process.stdin,
  upperCaseTransform,
  process.stdout
).catch(console.error);

Conseils de performances

  1. Utilisez highWaterMark pour contrôler la mise en mémoire tampon
  2. Implémenter stream.Readable.from() pour les itérables asynchrones
  3. Exploitez stream.finished() pour le nettoyage

Pièges courants

  1. Ignorer la contre-pression
  2. Erreurs de mauvaise gestion
  3. Négliger de mettre fin aux flux inscriptibles

Les flux brillent par leurs grands ensembles de données ou leur traitement en temps réel. Maîtrisez-les pour des applications Node.js évolutives.

à votre santé ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn