Node.js后端开发 - 基础篇 #8 流和管道

上一篇文章我们介绍了nodejs的创建和删除文件、目录,详见:Node.js后端开发 - 基础篇 #7 创建和删除文件、目录, 这篇文章我们将介绍nodejs的流和管道,什么是流呢?下面我们开始举例编码!

MacBook-Pro:hello-nodejs luminal$ ls
app.js          count.js        readMe.txt      temp

这里有个目录 hello-nodejs,我用一个命令ls,把这个目录下的所有内容给输出出来,

它里面有文件和目录,那么我们要对这个输出的信息进行处理的话,就要用到流和管道,

如果我要查看里面是不是包含"app"关键字,我可以输入如下命令:ls | grep app

那么在这种情况下 ls 它就输出了一个流,它的输出的流作为 grep app 这个命令的输入,

也就是 ls 的输出作为 grep app 的输入。然后我们还可以这么做体验一下 ls | grep app | grep js

MacBook-Pro:hello-nodejs luminal$ ls | grep app
app.js
MacBook-Pro:hello-nodejs luminal$ ls | grep app | grep js
app.js
MacBook-Pro:hello-nodejs luminal$ 

如果你熟悉linux,那个标准输入、输出也是一种流,这个流有很多应用。还有在nodejs中对http请求的处理,也是用流来实现的,请求就是一个输入流,响应就是一个输出流。

nodejs官方api有介绍说所有流都是这个EventEmitter的一个实例,所以说我们这个流,也可以像事件那样进行处理。比如说放置一些监听函数之类的。这个流有很多应用,比如说处理数据。

最典型的就是http服务的时候我们会用到,那个数据的请求和响应就是流的一种体现。还有对数据进行处理,比如说我们流行的构建工具webpack、gulp之类的,它们也大量运用了流这个技术,等下我们会实现文件打包和压缩,它也是用流来实现的。

然后流的第二个应用,它就是能提高性能,在前几篇文章我们有介绍到文件系统的读写命令来读取文件内容,但是那些命令它是一次性把文件放到内存中,如果你的文件很大的时候,那么这种命令就不太合适了。要用流来处理,这个流的读取,它会把文件的内容,放到buffer缓冲区中,它可以一边放一边处理,以此提高性能!所以说流有两个比较好的用途:1、处理数据  2、提高性能

更新中。。。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章