stream handbook
如果对 stream 还不熟悉,先请阅读下这篇文章 stream-handbook。
总结下这篇文章:
- stream 使得编程模型概念变简单。
- stream 可以节省内存开销,从 readable 到 writeable,readable 读多少,writeable 写多少,用完就删除。
stream 的关键就是
|
|
Readable.pipe(Duplex).pipe(Writable)
Readable 可以 pipe 到 Writable 里去,反之不行。
但是 Duplex 即是 Readable 又是 Writable,所以这里可以做为中间的桥接。
Transform 继承自 Duplex,但是与 duplex 的差别在于,pipe 进它 writeable 里的 buffer 经过转换后自动添加到 readable,一般来说,不必重写它的 _read 和 _write 方法,只要实现转换方法 _transform 就行了。
怎么实现一个类似 gulp 的 pipe 功能
大致 api 功能:
|
|
把 paths.scripts 里的 js 代码经过一系列的 stream 的转换最后输出到 gulp.dest(‘build/js’) 里。
其中
这里实现了 Transform 的 stream,对进来的数据做一系列的转换。
可以到的结果如下:
|
|