系列文章目录
一阶段
1.Node基本模块之 fs
2. Node基本模块之stream
3.Node基本模块之http
4.Node基本模块之crypto
二阶段 koa框架
1.koa入门以及koa如何处理不同url
2.koa的模板引擎Nunjucks
3.koa实现MVC模式
三阶段
1.Node+WebSocket 实现一个聊天室
四阶段
1.在koa中如何使用REST
2.在koa中编写符合REST 的接口
前言
这个Node系列学习主要是对Node进一步深层次的学习了解,大概会用10篇左右的文章来和大家分享学习心得,感兴趣的小伙伴可以关注一下。
一、stream模块是干什么的?
- stream是Node.js提供的又一个仅在服务区端可用的模块,目的是支持“流”这种数据结构。
- 流是一种抽象的数据结构,流的特点是数据是有序的,而且必须依次读取,或者依次写入,不能像Array那样随机定位。
- 有些流用来读取数据,比如从文件读取数据时,可以打开一个文件流,然后从文件流中不断地读取数据。有些流用来写入数据,比如向文件写入数据时,只需要把数据不断地往文件流中写进去就可以了。
- 在Node.js中,流也是一个对象,我们只需要响应流的事件就可以了:data事件表示流的数据已经可以读取了,end事件表示这个流已经到末尾了,没有数据可以读取了,error事件表示出错了。
二、具体使用步骤
1.读取文本
下面是一个从文件流读取文本
var rs = fs.createReadStream('sample.txt', 'utf-8');
rs.on('data', function(chunk) {
console.log('DATA:')
console.log(chunk);
});
rs.on('end', function() {
console.log('END');
});
rs.on('error', function(err) {
console.log('ERROR: ' + err);
});
2.写入文件
要以流的形式写入文件,只需要不断调用write()方法,最后以end()结束
var ws1 = fs.createWriteStream('output1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据...\n');
ws1.write('END.');
ws1.end();
var ws2 = fs.createWriteStream('output2.txt');
ws2.write(new Buffer('使用Stream写入二进制数据...\n', 'utf-8'));
ws2.write(new Buffer('END.', 'utf-8'));
ws2.end();
3.pipe管道
我们用pipe()把一个文件流和另一个文件流串起来,这样源文件的所有数据就自动写入到目标文件里了,所以,这实际上是一个复制文件的程序var rs = fs.createReadStream('sample.txt');
var ws = fs.createWriteStream('copied.txt');
rs.pipe(ws);
总结
这篇文章主要对Node 基本模块中的stream模块进行了简单的梳理学习,后续还需要结合一些实际场景去使用,熟悉。