我目前正在尝试围绕Node的流进行思考。我想我明白了,但我不确定。让我感到困惑的是多米尼克·塔尔(Dominic Tarr)的这句话:
流是节点最好和最容易被误解的想法,[...]
由于多米尼克绝对是一个非常聪明的人(我想比我更聪明),我不确定我是否真的正确理解了流,或者我是否错过了重点;-)。因此,我想解释一下我是如何理解流的,并请求您的批准或拒绝。
我对流的基本理解是,流是将数据从源传输到目标的抽象包装器。有可读和可写流,以及可读和可写的双工流。这个想法是抽象出实际的源或目标,以便您可以专注于处理流,而无需知道您正在处理的实际资源。您只是访问流以进行读取和/或写入。
我对 Node.js 流的理解是否正确? 基本上,这与 .NET 中的流的想法相同(这是我过去 12 年左右的背景)。 节点.js流与 .NET 中的流有何不同?
举个例子:我想从文件还是网络资源中读取并不重要,我只需使用流将实际源抽象出来,然后从该流中读取即可。我甚至可以更改源代码,但我的流读取代码仍然以完全相同的方式工作。 这是对的吗?
我认为你说对了。节点中的流就像花园软管一样工作。您可以连接源和目标(作为可读/可写或双工流),还可以将流的输出连接到另一个流的输入,从而进一步扩展数据的传输方式。
Substack在去年的LXJS大会上对Node中的Streams进行了很好的演讲.js:
LXJS 2012 - James Halliday - 利用流的惊人力量
它非常压缩(你必须不时暂停视频,因为他的实时编码速度非常快),但给人留下了流如何工作的好印象。