Day9的时候说明了Stream(串流)和Buffer(缓冲)的概念,今天作为延伸来看一下Pipe。
藉由从一个串流读取资料并写入另一个串流以连结两个串流的概念就是Pipe,在NodeJS中可以透过将读取串流Pipe到写入串流,让读取串流上的Chunk(资料片段)可以连结到写入串流并输出,也可以透过读写字串进行多次的Pipe。
Pipe的作用其实就是把读取串流读取的资料片段交给写入串流输出,如果不使用Pipe,可以透过读取串流注册的data
事件读取资料片段後,再由写入串流的write
输出资料到档案,下面分别为不使用Pipe与运用Pipe函式的程序码,以Day9使用的测试资料为例。
不使用Pipe
let fs = require("fs");
//建立读取串流与写入串流
let readable = fs.createReadStream(__dirname + "/data.txt");
let writable = fs.createWriteStream(__dirname + "/copy.txt");
//注册data事件
readable.on("data", function(chunk){
console.log(chunk);
//将chunk写入目标档案
writable.write(chunk);
});
使用Pipe
let fs = require("fs");
let readable = fs.createReadStream(__dirname + "/data.txt");
let writable = fs.createWriteStream(__dirname + "/copy.txt");
readable.pipe(writable);
所以pipe()
函式的概念可以从程序码中更清楚的理解,而透过NodeJS中建立好的pipe()
又可以再次的让程序码变的简洁。
这十天下来对NodeJS有个小小的感想,觉得NodeJS是个适合快乐开发的JS执行环境,许多功能都建立在模组中,省去一些繁琐的开发部份,还有一些为了便利开发衍生出来的概念,要写文章前都要先确定一下与JS有关或是互相关联的概念是不是有写过、需不需要另外写...总之明天开始要进入下一个阶段,开始了解服务器端的逻辑与架构,今天也谢谢大家。
<<: Day 11 - 丰收款非官方 PHP SDK 发布
前言 嗨,大家好!我是 Jade,这是我第一次参加 iTHome 铁人赛~ 好紧张XD 犹豫了很久之...
昨天我们已经能成功新增订单了,今天我们就来练习直接在TableView往左滑完成删除订单的功能吧! ...
终於到了倒数第二篇了,今天的文章说是为了渗透测试的流程,做了一下整理,当然每一个人在渗透测试的时候情...
此用React的最大目的就是将UI分区模组化成独立的、可复用的元件。 该如何运用这些元件? 就是将资...
I/O运作 tags: IT铁人 I/O装置 所谓的I/O装置,就是input/output的装置,...