此为慕课网 两小时学会 Node.js stream 学习笔记。stream
的思想在各个语言中都是相通的,不限于Cpp、Java、Golang等,可以大大减少内存的消耗,提高代码的运行效率。
主要组成部分
data
事件,用来监听 stream 数据的输入end
事件,用来监听 stream 数据输入完成fs.createReadStream
方法,返回一个文件读取的 stream 对象fs.createWriteStream
方法,返回一个文件写入的 stream 对象pipe
方法,用来做数据流转
1 | const http = require('http'); |
从哪里来
- 控制台输入
- http请求中的request
- 读取文件
控制台输入
1 | process.stdin.on('data', (chunk) => { |
http的request
1 | const http = require('http'); |
从文件中读取
1 | const fs = require('fs'); |
到哪儿去
- 控制台
- http请求的response
- 写入文件
几个示例代码
1 | // console |
1 | // http |
1 | // fs |
建立WebServer
1 | const http = require('http'), |
按行读取
1 | const fs = require('fs'); |
stream流动的单位
8个二进制单位为一个存储单元,成为字节(byte),能存储的最整数位2^8=258
常常用两位16进制数代表一个字节,如 #CCCCCC
为三字节
1 | const str = '学习 nodejs stream'; |
流的种类
read stream
1 | const Readable = require('stream').Readable; |
write stream
1 | const Writable = require('stream').Writable; |
duplex stream
1 | const fs = require('fs'); |