iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >nodejs中stream和pipe机制怎么实现
  • 193
分享到

nodejs中stream和pipe机制怎么实现

2024-04-02 19:04:59 193人浏览 安东尼
摘要

这篇文章给大家分享的是有关nodejs中stream和pipe机制怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过nodeschool学习streamnodeschoo

这篇文章给大家分享的是有关nodejs中stream和pipe机制怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

通过nodeschool学习stream

nodeschool有一个stream-adventure教程教导stream的使用,很简单

简单stream进行pipe

首先,我们可以通过管道将输入定位到输出,输入输出可以是控制台或者文件流或者Http请求,比如

process.stdin.pipe(process.stdout)
process.stdin.pipe(fs.createWriteStream(path))
fs.createReadStream(path).pipe(process.stdin)

pipe中间进行处理

如果我们想要在管道中间进行处理,比如想将输入的字符串变成大写写到输出里,我们可以使用一些可以作为中间处理的框架,比如through3就很方便

var through3 = require('through3');
var stream = through3(write,end)
process.stdin
  .pipe(stream)
  .pipe(process.stdout);

function write(line,_,next){
  this.push(line.toString().toUpperCase())
  next();
})
function end(done){
  done();
})

stream转化成普通回调

当我们输入是流,而输出是个普通函数,我们需要把输入流转化为普通的buffer,这时可以试用concat-stream库

var concat = require('concat-stream');

var reverseStream=concat(function(text){
  console.log(text.toString().split("").reverse().join(""));
})

process.stdin.pipe(reverseStream)

http server中的流

类似stdin和fs,http由于其特性也适合使用流,所以其自带类似特性

var http = require('http');
var server = http.createServer(function(req,res){
  req.pipe(res);
})

既作为输入也作为输出的流

request框架实现了如下功能,将一个流pipe到request请求中,然后将流的内容发给服务器,然后返回作为流供其他代码使用,实现如下

var request = require('request');
var r = request.post('http://localhost:8099');
process.stdin.pipe(r).pipe(process.stdout)

分支管道

下边是一个例子,这个例子将输入管道中html包含loud class的元素放入另一个管道进行大写操作,然后最后合并成输出

var trumpet = require('trumpet');
var through3 = require('through3');
var fs = require('fs');
var tr = trumpet();
var stream = tr.select('.loud').createStream();
var upper = through3(function(buf,_,next){
  this.push(buf.toString().toUpperCase());
  next();
})
stream.pipe(upper).pipe(stream);
process.stdin.pipe(tr).pipe(process.stdout);

合并输入输出stream例子

合并后的输入输出可像前文request一样使用,下边这个例子实现了使用流的方式进行子进程调用

var spawn = require('child_process').spawn;
var duplexer2 = require('duplexer2');

module.exports = function(cmd, args){
  var c = spawn(cmd,args)
  return duplexer2(c.stdin,c.stdout)
}

总结

通过上边的例子,可以知道stream应该还有如何合并等更复杂的应用方式。总之整体上符合如下特性:

  • Stream分为readable、writeble

  • Stream通过pipe方法控制流向

  • httpserver和httpClient和file system和process.stdin\out\err通常可以作为stream

  • Stream可以被on(event)转化为普通的变量,普通变量可以被write转换成stream

  • Stream自身可以被拆分、合并、过滤

感谢各位的阅读!关于“nodejs中stream和pipe机制怎么实现”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: nodejs中stream和pipe机制怎么实现

本文链接: https://www.lsjlt.com/news/71234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs中stream和pipe机制怎么实现
    这篇文章给大家分享的是有关nodejs中stream和pipe机制怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过nodeschool学习streamnodeschoo...
    99+
    2024-04-02
  • Nodejs中stream流模块怎么样
    这篇文章将为大家详细讲解有关Nodejs中stream流模块怎么样,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。stream流模块,是Node中非常核心的一个模块,其它模...
    99+
    2024-04-02
  • Node.js中怎么实现Stream流
    本篇内容主要讲解“Node.js中怎么实现Stream流”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js中怎么实现St...
    99+
    2024-04-02
  • nodeJS中怎么实现一个二进制buffer对象
    nodeJS中怎么实现一个二进制buffer对象,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 概述由于应用场景不同...
    99+
    2024-04-02
  • Java中怎么实现SPI机制
    Java中怎么实现SPI机制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。2 什么是SPI机制SPI是Service Provider Interface 的简...
    99+
    2023-06-16
  • Nodejs中怎么复制文件和文件夹
    Nodejs中怎么复制文件和文件夹,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.使用fs复制文件使用fs对象的readFileSync...
    99+
    2024-04-02
  • Java中的lambda和stream实现排序
    目录前言1、定义一个基础类2、使用Comparator排序3、使用lambda排序4、使用Comparator的comparing方法排序5、自定义比对方法6、使用stream排序7...
    99+
    2024-04-02
  • Nodejs中怎么实现多线程
    Nodejs中怎么实现多线程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1 背景需求中有以下场景1 对称解密、非对称解密2 压缩、解压3...
    99+
    2024-04-02
  • nodejs中怎么实现express路由
    这篇文章将为大家详细讲解有关nodejs中怎么实现express路由,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。路由通常HTTP URL的格式是这样的:h...
    99+
    2024-04-02
  • JAVA中怎么实现反射机制
    这期内容当中小编将会给大家带来有关JAVA中怎么实现反射机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JAVA反射机制定义:  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属...
    99+
    2023-06-17
  • PHP中怎么实现缓存机制
    这篇文章给大家介绍PHP中怎么实现缓存机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。普遍缓存技术数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不...
    99+
    2023-06-17
  • nodejs怎么实现钉钉单聊机器人
    这篇文章主要介绍了nodejs怎么实现钉钉单聊机器人,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。要实现的效果通过预先配置问答库和语义识别能...
    99+
    2024-04-02
  • NodeJS中怎么实现循环引用
    这篇文章将为大家详细讲解有关NodeJS中怎么实现循环引用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。场景复现出现问题场景比较简单,一共四个类:paren...
    99+
    2024-04-02
  • nodejs中怎么实现get/post请求
    这篇文章给大家介绍nodejs中怎么实现get/post请求,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.用form表单的方法:(1)get方法前端代码:<form ...
    99+
    2024-04-02
  • compose和pipe函数怎么在JavaScript中使用
    本篇文章为大家展示了compose和pipe函数怎么在JavaScript中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、...
    99+
    2023-06-14
  • Nodejs中怎么利用express和multer实现文件上传
    这期内容当中小编将会给大家带来有关Nodejs中怎么利用express和multer实现文件上传,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。非常简单,一行命令。npm&...
    99+
    2024-04-02
  • Java中的回调机制怎么实现
    本篇内容介绍了“Java中的回调机制怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!模块间的调用在一个应用系统中,无论使用何种语言开发...
    99+
    2023-06-02
  • NoSQL中的缓存机制怎么实现
    在NoSQL中,缓存机制可以通过以下几种方式实现: 使用内存缓存:将数据存储在内存中,减少读写操作的时间。可以使用缓存库如Red...
    99+
    2024-05-07
    NoSQL
  • Angular中的Change Detection机制怎么实现
    这篇文章主要介绍“Angular中的Change Detection机制怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Angular中的Change Detection机制怎么实现”文章能帮...
    99+
    2023-07-04
  • nodejs路由怎么实现
    本篇内容介绍了“nodejs路由怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作