引子
在编写代码时,我们应该有一些方法将程序像连接水管一样连接起来 — 当我们需要获取一些数据时,可以去通过”拧”其他的部分来达到目的。这也应该是IO应有的方式。 — Doug McIlroy. October 11, 1964
从早先的unix开始,stream便开始进入了人们的视野,在过去的几十年的时间里,它被证明是一种可依赖的编程方式,它可以将一个大型的系统拆成一些很小的部分,并且让这些部分之间完美地进行合作。在unix中,我们可以使用|
符号来实现流。在node中,node内置的stream模块已经被多个核心模块使用,同时也可以被用户自定义的模块使用。和unix类似,node中的流模块的基本操作符叫做.pipe()
,同时你也可以使用一个后压机制来应对那些对数据消耗较慢的对象。
在node中,流可以帮助我们将事情的重点分为几份,因为使用流可以帮助我们将实现接口的部分分割成一些连续的接口,这些接口都是可重用的。接着,你可以将一个流的输出口接到另一个流的输入口,然后使用使用一些库来对流实现高级别的控制。
对于小型程序设计(small-program design)以及unix哲学来说,流都是一个重要的组成部分,但是除此之外还有一些重要的事情值得我们思考。永远要记得:双鸟在林不如一鸟在手。