Menguasai Aliran dan Talian Paip Node.js

DDD
Lepaskan: 2024-09-19 06:15:33
asal
1045 orang telah melayarinya

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();
});
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!