(要求は、リスナーを定義することができる理由のhttpは最終的に知っているここを参照してください)
Node.jsの流れ(ストリーム)
ストリームは、このインタフェースを実装する多くのオブジェクトがありますが、ノードの抽象インタフェースです。例えば、HTTPサーバへのリクエストを開始したオブジェクトを要求すると、STDOUT(標準出力)、ならびに、ストリームです。
Node.jsの、ストリームフローは、4つのタイプがあります。
読める - 読み取り操作。
書き込み可能 - 書き込み操作。
二重 - 読み取りおよび書き込み操作。
変換 - 操作は、データを書き込み、その結果を読み出すことです。
すべてのStreamオブジェクトを持つEventEmitterのインスタンスです。一般的なイベントは次のとおりです。
データ - データが時にトリガを読み込まれます。
エンド - それ以上のデータはトリガーを読んでいないがあります。
エラー - エラーが受信し、書面で発生したときにトリガ。
仕上げは - すべてのデータが基礎となるシステムに書き込まれたときにトリガーされます。
このチュートリアルでは、すべての人のための一般的な流れ作業を紹介します。
読みます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
FS = VAR( "FS")を必要とします。 VARデータ= '初心者チュートリアルの公式ウェブサイトのアドレス:www.runoob.com';
//書き込むことができるストリームを作成し、ドキュメントのoutput.txtに書かれている。 ヴァールwriterStream = fs.createWriteStream(「output.txtと」 );
// UTF8エンコード使用して、書き込みデータ writerStream.write(データを'UTF8') ;
//ドキュメントの末尾にマーク writerStream.endを();
//プロセスストリームイベント- >データ、終了、およびエラー writerStream.on( '完了'、関数(){ にconsole.log() "書き込み完了"; });
writerStream.on( 'エラー'、関数(ERR){ にconsole.log(err.stack); });
console.log(「プロセスを終了しました」)。
|
書き込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
FS = VAR( "FS")を必要とします。 VARデータ= '初心者チュートリアルの公式ウェブサイトのアドレス:www.runoob.com';
//書き込むことができるストリームを作成し、ドキュメントのoutput.txtに書かれている。 ヴァールwriterStream = fs.createWriteStream(「output.txtと」 );
// UTF8エンコード使用して、書き込みデータ writerStream.write(データを'UTF8') ;
//ドキュメントの末尾にマーク writerStream.endを();
//プロセスストリームイベント- >データ、終了、およびエラー writerStream.on( '完了'、機能(){ はconsole.log();グレート列"の書き込みが完了しました。" のNode.jsストリーム AN> });
writerStream.on( 'エラー'、関数(ERR){ にconsole.log(err.stack); });
console.log(「プロセスを終了しました」)。
|
パイプラインの流れ
1 2 3 4 5 6 7 8 9 10 11 12 13
|
VaRのFS =( "FS")を必要とします。
//作成ストリーム可読 VAR readerStream = fs.createReadStream( 'INPUT.TXT' );
//書き込み可能なストリームを作成 VAR writerStream = fs.createWriteStream( 'output.txtと'の );
//書き込みパイプライン動作 // INPUT.TXT読み取った原稿内容、およびoutput.txtとドキュメントに内容を書き込む readerStream.pipe(writerStream)。
console.log(「プロセスを終了しました」)。
|
リンクフロー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
链式流 链式是通过连接输出流到另外一个流并创建多个流操作链的机制。链式流一般用于管道操作。
接下来我们就是用管道和链式来压缩和解压文档。
创建 compress.js 文档, 代码如下:
var fs = require("fs"); var zlib = require('zlib');
// input.txt.gz文書INPUT.TXT圧縮 fs.createReadStream( 'INPUT.TXT') .pipe(zlib.createGzip()) .pipe(fs.createWriteStream( 'input.txt.gz')); コンソール.logの(「文書圧縮が完了した」); 次のようにコードが実行される結果は次のとおりです。
$ノードcompress.js 文書の圧縮が完了しています。 あなたは上記の操作を実行した後、我々は現在のディレクトリがINPUT.TXTアーカイブinput.txt.gzの下に作成されていることがわかります。
次に、以下のように、decompress.js文書を作成、のドキュメントを展開してみましょう:
VaRのFS =( "FS")を必要とします。 VaRのZLIBは=( 'ZLIB')を必要とします。
// INPUT.TXT input.txt.gz文書を抽出 fs.createReadStream( 'input.txt.gz') .pipe(zlib.createGunzip()) ; .pipe(fs.createWriteStream( 'INPUT.TXT'))コンソール.logの(「文書抽出が完了しました。」)。
|
私たちが知っているように、リンクフローは、すべての方法............ダウンポイントである
チェーンプログラム