參考 nodejs stream 手冊
英文原版stream-handbook
Streams come to us from the earliest days of unix and have proven themselves over the decades as a dependable way to compose large systems out of small components that do one thing well.
You can then plug the output of one stream to the input of another and use libraries that operate abstractly on streams to institute higher-level flow control.
basic
there are 5 kinds of streams:readable,writable,transform,duplex ,and "classic"
pipe
All the different types of streams use .pipe()
to pair inputs with outputs.
.pipe()
is just a function that takes a readable source stream src and hooks the output to a destination writable stream dst
src.pipe(dst)
.pipe(dst)
returns dst
so that you can chain together multiple .pipe()
calls together:
a.pipe(b).pipe(c).pipe(d)
which is the same as
a.pipe(b); b.pipe(c); c.pipe(d);
This is very much like what you might do on the command-line to pipe programs together.
a|b|c|d
except in node instead of the shell!