Rumah >hujung hadapan web >tutorial js >Menguasai Aliran dan Talian Paip Node.js

Menguasai Aliran dan Talian Paip Node.js

DDD
DDDasal
2024-09-19 06:15:331111semak imbas

Mastering Node.js Streams and Pipelines

Strim ialah kuasa besar Node.js untuk mengendalikan set data yang besar dengan cekap. Mari menyelami aliran dan saluran paip.

Mengapa Strim?

  1. Kecekapan ingatan
  2. Kecekapan masa
  3. Kebolehkompakan

Jenis Aliran

  1. Boleh dibaca
  2. Boleh ditulis
  3. Dupleks
  4. Ubah

Penggunaan Aliran Asas

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();
});

Masukkan Talian Paip

Saluran paip memudahkan komposisi strim dan pengendalian ralat.

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);

Aliran Transformasi Tersuai

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);

Petua Prestasi

  1. Gunakan highWaterMark untuk mengawal penimbalan
  2. Laksanakan strim.Readable.from() untuk iterables tak segerak
  3. Leverage stream.finished() untuk pembersihan

Perangkap Biasa

  1. Mengabaikan tekanan belakang
  2. Ralat salah pengendalian
  3. Mengabaikan untuk menamatkan strim boleh tulis

Strim bersinar dengan set data yang besar atau pemprosesan data masa nyata. Kuasai mereka untuk aplikasi Node.js boleh skala.

sorak?

Atas ialah kandungan terperinci Menguasai Aliran dan Talian Paip Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn