node.js(三 --- stream 管道流 模块化 函数)

一、stream  

  stream是一个抽象的接口,node中有很多对象实现了这个接口。

  stream有四种流类型: Readable: 可读操作;  Writable: 可写操作;  Duplex: 可读可写操作;  Transform:  操作被写入数据,然后都出结果;

  所有的stream对象独有EventsEmitter的实例,常用的事件有:  

      data: 当有数据可读时触发;

      end:  没有更多的数据可读时触发;

      error:  在接收和写入过程中发生错误时触发;

      finish:  所有数据已被写入到底层系统时触发;

  1、从流中读取数据

   例如: var  fs = require('fs');

       var data = '';

      var readerStream = fs.createReadStream('demo.txt');    //创建可读的流

      //开始执行读取的事件

      readerStream.on('data',  function(chunk){

        data += chunk;

      })

      readerSteam.on('end',   function(){

        console.log(data)

      })

      readerStream.on('error',  function(err){

        console.log(err.stack)

      })

      

  2、写入流

    例如: 

      var fs = require('fs');

      var  data = '要写入的内容'; 

      var writerStream = fs.creamWriteStream('demo.txt');       //写入demo.txt 文档内

      writeStream.write('data',  'UTF8');    //使用utf-8格式写入数据;

      writeStream.end();     //标记文件末尾;

      writeStream.on('finish',   function(){

         console.log('写入完成');

      })

      writeStream.on('error',  function(){

        console.log(err.stack);

      })

      

  3、管道流

  管道提供了一个从输出流到输入流的机制; 通常用于从一个流中回去数据,然后传递到另一个流中。

  例如; 

    var fs = require('fs');

    var readerStream = fs.creamReadStream('demo1.txt');

    var writeSteam = fs.creamWriteStream('demo2.text');

    readerStream.pip( writeStream);

  4、链式流

  链式是通过连接输出流到另一个流并创建多个流操作链的机制。链式流一般用于管道操作。

  例如: 

    var fs =  require('fs');

    var zlib = require('fs');

    var readerStream = fs.createReadStream('demo1.txt');

    readerStream.pip(zlib.createGzip())     //将文件进行压缩demo.txt.gz

          .pip(fs.createWriteStream('demo1.txt.gz'))

    fs.createReadStream('demo1.txt.gz').pip(zlib.createGunzio())   //将压缩文件进行解压

          .pip(fs.createWriteStream(demo.txt))    

二、模块化

  模块是node.js应用程序的基本组成部分,文件和模块是一  一 对应的。 简而言之,一个node.js文件就是一个模块,这个文件可能是javascript、json或者编译过的c/c++扩展;

  

三、函数

  node.js中的函数和javascript基本是一样的,都存在匿名函数,函数存在参数,以及可以有回调函数等等。

猜你喜欢

转载自www.cnblogs.com/mufc/p/10078348.html