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

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

DDD
リリース: 2024-09-19 06:15:33
オリジナル
1128 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート