在构建复杂系统时,通常将其拆解为功能独立的若干部分,通过一定的接口规范连接起来,以共同完成较复杂的任务。
在unix中,shell通过管道|
连接各部分,输入输出为文本流。
在Node.js中,内置的stream模块也实现了类似功能,各部分通过通过.pipe()
连接,输入输出可以是普通的文本流,也可以是对象流。
本系列试着从三个方面介绍stream相关的内容:
- 第一部分:基础篇。介绍stream接口的基本使用。
- 第二部分:进阶篇。重点剖析stream底层如何支持流式数据处理,及其背压(back pressure)机制。
- 第三部分:实战篇。介绍如何使用stream进行程序设计。从Browserify和Gulp的实现总结出两种模式,并基于stream构建一个为Git仓库自动生成changelog的应用作为示例。