Node.js转换流只按原样传递数据
Node.js transform stream only passes through data as-is
我试图创建一个小Node.js应用程序,可以读取Markdown文本并将其转换为HTML。为了实现这一点,我想创建一个转换流,它一次获取一个字符,计算其含义,然后返回它的HTML版本。
因此,例如,如果我传递转换流a *,它应该返回<b>
(或</b>
)。
然而,Transform流实际上并没有转换数据,无论我向它推送什么,它只是像我推送它一样返回,当我将console.log
语句放入流的Transform方法中时,我没有看到任何输出,就好像该方法甚至没有被调用。
下面是带有Stream的文件:
module.exports = function returnStream() {
const Transform = require('stream').Transform;
let trckr = {
bold: false
};
const compiler = new Transform({
transform(chunk, encoding, done) {
const input = chunk.toString();
console.log(input); // No output
let output;
switch (input) {
case '*':
if (trckr.bold === true) {
output = '</b>';
trckr.bold = false;
} else {
output = '<b>';
trckr.bold = true;
}
break;
default:
output = input;
}
done(null, output);
}
});
return compiler;
};
使用流的示例文件:
const transformS = require('./index.js')();
transformS.on('data', data => {
console.log(data.toString());
});
transformS.push('*');
谢谢!
done(null, output)
和transformS.push()
执行完全相同的功能:它们将数据推送到Transform流的可读的(输出)端。您需要做的不是调用transformS.push()
,而是使用transformS.write('*')
写入Transform流的可写(输入)端。
我还应该指出,您不应该在转换函数中对chunk
的内容进行假设。它可以是一个字符或一组字符(在这种情况下,input
可能永远不会等于'*'
)。
相关文章:
- Solr查询以按日期月份获取数据&年
- 如何使用jQuery按数据日期属性选择元素
- 无限滚动,动态数据按上次修改状态排序
- 我怎么能"加载更多“;数据按类别而不是全部放在一起
- 量角器:检查数据按日期排序
- 我可以请求一个带有JavaScript的网页,然后将其按原样发送到服务器进行进一步分析吗?
- 如何按原样打印页面
- d3js X 轴数据按季度分组按年份分组
- 如何在ECMA6提案中按原样使用迭代器
- HTML可以't按原样显示或根本不显示
- 如何保存/缓存dom,以便在点击后退按钮时页面按原样加载
- JSON数据按月排列/重新排序
- 数据按在视图不't似乎是工作,我在这里错过了什么
- Node.js转换流只按原样传递数据
- jsPDF没有按原样打印
- 如何按原样提交数据到另一个文件
- JavaScript:提取数据&按不同属性分组
- Undercore模板上的订单级别,确保Backbone Collection中的数据按设置的顺序加载
- JavaScript document.write(encoding html tag),按原样打印
- 表中的当前年份数据(按月记录)