这篇文章将为大家详细讲解有关Nodejs中stream流模块怎么样,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。stream流模块,是Node中非常核心的一个模块,其它模块如fs、http等都基于流stream模块的实例。而对于大多前端小白在刚入门Node的学习过程中,对于流的概念及使用还是不太好清晰的理解,因为在前端的工作中似乎很少有过关于”流”处理相关的应用。单纯“流”这个字,我们很容易产生水流,流动等的概念。官方定义:流,是用于在 Node.js 中处理流数据的抽象接口从官方的定义中,我们可以看出:流,是Node提供的一种处理数据的工具流,是Node中的一种抽象接口准确的理解,流,可以理解为数据流
,它是一种用来传输数据的手段,在一个应用程序中,流,是一种有序的,有起点和终点的数据流。造成我们对stream流不太好的理解的主要原因就是,它是一种免费云主机、域名抽象的概念。为了让我们能够清楚的理解stream模块,我们首先来以具体的应用场景来说明stream模块有哪些实际应用之处。stream流,在Node中主要应用在大量数据
处理的需求上,如fs对大文件的读取和写入、http请求响应、文件的压缩、数据的加密/解密等应用。我们以上面的图片说明流的使用,水桶可以理解为数据源
,水池可以理解为数据目标
,中间连接的管道,我们可以理解为数据流
,通过数据流管道
,数据从数据源流向数据目标。在Node中,流被分为4类:可读流,可写流,双工流,转换流。Writable
: 可以写入数据的流Readable
: 可以从中读取数据的流Duplex
: Readable
和 Writable
的流Transform
: 可以在写入和读取数据时修改或转换数据的 Duplex
流所有的流都是 EventEmitter
的实例。即我们可以通过事件机制监听数据流的变化。在深入学习4类流的具体使用之前,我们需要理解两个概念数据模式
和缓存区
,有助于我们在接下来流的学习中更好的理解。4.1 数据模式Node.js API 创建的所有流都只对字符串
和 Buffer
(或 Uint8Array
)对象进行操作。4.2 缓存区Writable
和 Readable
流都将数据存储在内部缓冲区(buffer)中。可缓冲的数据量取决于传给流的构造函数的 highWaterMark
选项, 对于普通的流,highWaterMark
选项指定字节的总数
;对于在对象模式下操作的流,highWaterMark
选项指定对象的总数。highWaterMark
选项是阈值,而不是限制:它规定了流在停止请求更多数据之前缓冲的数据量。当实现调用 stream.push(chunk)
时,数据缓存在 Readable
流中。 如果流的消费者没有调用 stream.read()
,则数据会一直驻留在内部队列中,直到被消费。一旦内部读取缓冲区的总大小达到 highWaterMark
指定的阈值,则流将暂时停止从底层资源读取数据,直到可以消费当前缓冲的数据当重复调用 writable.write(chunk)
方法时,数据会缓存在 Writable
流中。5.1 流读取的流动与暂停Readable
流以两种模式之一有效地运行:流动和暂停。流动模式:从系统底层读取数据并push()到缓存区,达到highWaterMark后 push() 会返回 false,资源停止流向缓存区,并触发data事件消费数据。暂停模式:所有的Readable流都是以Paused暂停模式开始,必须显式调用stream.read()方法来从流中读取数据。每一次数据达到缓存区都会触发一次 readable 事件,也就是每一次 push() 都会触发 readable。暂停模式切换到流动模式的方式:添加data事件句柄调用stream.resume()方法调用stream.pipe()方法将数据发送到 Writable流动模式切换到暂停模式的方式:如果没有管道目标,则通过调用 stream.pause() 方法。如果有管道目标,则删除所有管道目标。 可以通过调用 stream.unpipe()方法删除多个管道目标。5.2 可读流常用示例6.1 可写流的流动与暂停writeable流 与 readable流 是比较相似的,数据流过来的时候,会直接写入到缓存区,当写入速度比较缓慢或者写入暂停时,数据流会在缓存区缓存起来;当生产者写入速度过快,把队列池装满了之后,就会出现「背压」,这个时候是需要告诉生产者暂停生产的,当队列释放之后,writable流 会给生产者发送一个 drain 消息,让它恢复生产。6.2 可写流示例关于“Nodejs中stream流模块怎么样”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
本篇内容主要讲解“HTML5文档结构及相关元素有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5文档结构及相关元素有哪些”吧! SVG文档的元素基本可以分为以下几类: •动画元素:animate,ani…