zoukankan      html  css  js  c++  java
  • 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基本是一样的,都存在匿名函数,函数存在参数,以及可以有回调函数等等。

  • 相关阅读:
    迅雷亲历面试经过,笔试+上机+面试(完整)
    Flash Player安全高级攻略
    EBS查看Report程式所挂在的. 报表名. 组. 责任
    ORACLE常用后台表查询
    Ap_Aging_Report SQL月底结账使用
    2012年最新会计科目表
    如何用sql实现AP_payments中应付余额与GL_balance对应科目余额相同
    SQL应收帐款帐龄报表(AR_Aging_Reporting)
    Navigator: Disable Multiform
    GL: 访问权限集
  • 原文地址:https://www.cnblogs.com/mufc/p/10078348.html
Copyright © 2011-2022 走看看