什么是流? Node中为什么要有流这个概念 ? 使用场景?

流指的是数据流,指的是数据是分片传输, 数据可以实现非阻塞

gulp 【 流式操作 】

案例: 打包压缩包

流程:

  1. 读取文件

    const fs=require(‘fs‘)

2. 创建压缩包

const zlib=require(‘zlib‘)

  3. 将读取的数据流写入压缩包

const inp=fs.createReadStream(./xx.text) 读取数据

const gzip=zlib.createGzip() 创建压缩包

  4. 输出压缩包   

const outp=fs.createWriteStream(‘./xx.text.zip‘)

inp

.pipe(gzip)

.pipe(outp)

原文地址:https://www.cnblogs.com/liaohuihui/p/11203396.html

时间: 2024-10-17 13:34:32

什么是流? Node中为什么要有流这个概念 ? 使用场景?的相关文章

node中的可读流和可写流

javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同:Buffer在定义的时候必须明确知道其长度,但是Array的长度是可以动态变化的.定义Buffer有三种方式: 1. var buf = new Buffer(3);//指定buffer占用3个字节 2. var buf = new Buffer("hello","utf-8&

Node中的全局变量和全局对象

全局对象和全局变量 概念:所有属性都可以在程序的任何地方访问,即全局变量.在JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量都是global对象的属性,如:console.process等. global最根本的作用是作为全局变量的宿主,满足一下条件称为全局变量 1. 在最外层定义的变量 2. 全局对象的属性 3. 隐式定义的变量 ▲ 在node中不可能在最外层定义变量,因为所有的用户代码都是属于当前模块的,而模块本身是不属于最外层上下文

node中的Readable - flowing/non-flowing mode

大家都知道在node中Readable Stream有两种模式: flowing mode和non-flowing mode. 对于flowing mode的Readable Stream, 我们是没法控制它何时去读数据读多少的,它会去尽快的去消耗data,并emit出来. 1 // in lib/_stream_readable.js 2 if (state.flowing && state.length === 0 &&!state.sync) { 3 stream.e

node 进阶 | 通过node中如何捕获异常阐述express的特点

node如何捕获异常 node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么node还这么火?甚至有了Node工程师这个岗,肯定就是node有自己crash之前与之后的解决方法,比如捕获异常 问:nodejs如何捕获异常?答:回调函数中有err形参,console.log出来,这是我之前回答别人问题的答案,但是自从我这几天看了如何捕获异常,才知道捕获异常的精髓就是不要让服务

重回博客 谈一谈Node中的异步和单线程

重回博客,这个帐号之前注册后就只发了一篇博客.听朋友建议,决定一周两次更新. 第一篇谈论一下最近想的比较多的异步的问题. 传统多线程异步 传统的异步是多线程的,当要同时做两件事的时候,他们是执行在不同的线程里的.这就像是柜台卖东西,来了一个人就得找一个员工陪他,直到这个人走了这个员工才能接待下一个客人.店内的员工就像线程池里的空闲线程,空闲的时候可以去接待客人,可是同时只能接待一个人,要接待其他人就得找另外一个人. 电脑里的线程相当于一个员工团队,哪里需要去哪里.多线程的异步好处在于可以更多的占

Cocos2d-x 3.0final 终结者系列教程09-绘图节点Node中的Schedule

如何让HelloWorld项目中的HelloWorld文字实现自动运动呢? 有的童鞋会想到使用线程,不断修改Label的Position, 这样不行,因为在Cocos2d-x中只能在主线程中来修改Node中的信息,这是由于所有的node都是非线程安全的,如果我们的场景移除了node 在子线程种可能引用错误,所以,要让Node执行特定的变化,需要在当前的Node中使用Schedule 使用方法很简单 1.在当前的HelloWorldScne.h中添加一个方法在HelloWorldScene 如:

Cocos2d-x 3.0final 终结者系列教程10-绘图节点Node中的Action

Action是作用在Node上的逻辑处理,比如让Node移动.旋转.缩放.变色.跳跃.翻转.透明等等,都有相对应的Action Action如何在Node上使用 1.定义Action对象 如 auto act=MoveTo::create(Point(30,0),1); 2.在Node上执行runAction auto sp=Sprite::create("npc.png"); sp->runAction(act); 这样就实现了在sp这个Node上执行移动到30,0这个坐标的动

Node中的定时器详解

在大多数的业务中,我们都会有一些需求,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都具有将代码延迟一段时间的能力.在node中可以使用三种方式实现定时功能:超时时间,时间间隔和即时定时器.虽然有这三种定时器功能但是在平常的业务中使用还是有差别的,下来我们就一起讨论一下这三种定时器. 1.用超时时间来延迟工作 超时定时器用于将工作延迟一个特定的时间数量,当时间到了,回调函数执行,而定时器会消失.(建议:对于只执行一次的工作,使用超时时间). 1秒之后执行my

Node中http模块详解(服务端篇)

Node中的Http Node中提供了http模块,其中封装了高效的http服务器和http客户端 http.server是一个基于事件的HTTP服务器,内部是由c++实现的,接口由JavaScript封装 http.request是一个HTTP客户端工具.用户向服务器发送数据. 下面就来分别得介绍一下http的服务端和客户端 一.HTTP服务器 http.Server实现的,它提供了一套封装级别很低的API,仅仅是流控制和简单的解析,所有的高层功能都需要通过它的接口,就像在前面的文章<Node