ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js ストリームとパイプラインをマスターする

Node.js ストリームとパイプラインをマスターする

DDD
DDDオリジナル
2024-09-19 06:15:331085ブラウズ

Mastering Node.js Streams and Pipelines

ストリームは、大規模なデータセットを効率的に処理するための Node.js のスーパーパワーです。ストリームとパイプラインについて詳しく見ていきましょう。

なぜストリームなのか?

  1. メモリ効率
  2. 時間効率
  3. 構成可能性

ストリームの種類

  1. 読み取り可能
  2. 書き込み可能
  3. デュプレックス
  4. 変身

基本的なストリームの使用法

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

パイプラインに入る

パイプラインにより、ストリームの構成とエラー処理が簡素化されます。

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

カスタム変換ストリーム

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

パフォーマンスのヒント

  1. highWaterMark を使用してバッファリングを制御します
  2. 非同期イテラブル用に stream.Readable.from() を実装します
  3. stream.finished() を利用してクリーンアップを行う

よくある落とし穴

  1. バックプレッシャーを無視します
  2. エラーの誤処理
  3. 書き込み可能なストリームの終了を怠っています

ストリームは、大規模なデータセットやリアルタイム データ処理で威力を発揮します。スケーラブルな Node.js アプリケーションのためにこれらをマスターしてください。

乾杯?

以上がNode.js ストリームとパイプラインをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。