Javascript 用喇叭将水流吹回自身是如何工作的?
学习节点.js。显然,小号的工作原理是通过管道将流传回自身,这样处理后的数据就可以输出了。这对我来说毫无意义,因为这似乎就像是将一条流的两端连接到它自己。如何区分预处理数据和后处理数据?也就是说,为什么Javascript 用喇叭将水流吹回自身是如何工作的?,javascript,node.js,Javascript,Node.js,学习节点.js。显然,小号的工作原理是通过管道将流传回自身,这样处理后的数据就可以输出了。这对我来说毫无意义,因为这似乎就像是将一条流的两端连接到它自己。如何区分预处理数据和后处理数据?也就是说,为什么loud.pipe(…).pipe(loud)不会导致某种形式的无限处理循环 var trumpet = require('trumpet'); var through = require('through'); var tr = trumpet(); var loud = tr.select(
loud.pipe(…).pipe(loud)
不会导致某种形式的无限处理循环
var trumpet = require('trumpet');
var through = require('through');
var tr = trumpet();
var loud = tr.select('.loud').createStream();
loud.pipe(through(function (buf) {
this.queue(buf.toString().toUpperCase());
})).pipe(loud);
process.stdin.pipe(tr).pipe(process.stdout);
我也有同样的困惑: DaveCoa在github的nodeschool.io讨论线程上对我说了这句话。 下面是一个摘录
我想你可能把这两条流混为一谈了
tr
是主喇叭流
- 它是一个转换流(具有像管道一样的输入和输出)
- 它以html作为输入
- 它输出html
- 我们将
连接到它的输入端,将它的输出端连接到stdin
stdout
tr
使用loud类选择html元素来创建loud
- 它是一个双工流(具有像电话一样的输入和输出)
- 它输出或发送html元素
- 它还接收html元素
tr
的行为方式是,当html流式传输到它时,如果有类为loud的元素,它们将从loud
输出,这会将它们发送到为使文本大写而构建的直通流,这会将它们发送回loud
的输入,将它们重新插入最初从tr
接收和输出的htmltr
我想需要注意的一件重要事情是,尽管大声
与tr
有着重要的联系,但它们实际上根本没有通过管道连接在一起
我也很困惑,我想用我的话再次表达:
tr.select('.loud').createStream()
创建一个双工流,它只不过是一个组合的ReadStream
和WriteStream
此流接收其ReadStream中的所有匹配项。
如果您向WriteStream写入,则喇叭会将其视为匹配替换
这对我来说也是一样的:
//创建小号流
var tr=喇叭();
//使用选定元素创建流
var trumpetSelector=tr.select('.loud');
var upperOut=trumpetSelector.createReadStream();
var upperIn=trumpetSelector.createWriteStream();
upperOut.pipe(新的UpperCase Transformer()).pipe(upperIn);
如果我错了,请纠正我这是一个很好的解释!你能为小号文档做些贡献吗?