zoukankan      html  css  js  c++  java
  • 一些node模块的学习思考

    12月14日清单

    1 readline模块

            var readline = require("readline");
               //  input 是必须的,output是可选的
            rl = readline.createInterface({input:process.stdin,output:process.stdout});
            rl.question("question?",(answer)=>{ 处理 rl.close()})
            rl.on("line",(line)=>{处理})
            rl.on("close",()=>{处理})
            rl.setPrompt("你的提示符");
            rl.prompt();
            rl.write(data[,key])
                rl.write("删除缓存");
                rl.write(null,{ctrl:true,name:'u'});  可删除尚未有换行的缓冲区内容
    
          可以将rl设为input:fs.createReadStream('txtfile');  来借助line事件来对文件进行逐行读取
    

    2 dgram模块

          只能通过var server = dgram.createSocket('udp4')来获取 ipv4的udp实例,不能new
          事件:close  error
              listening  当server.bind()执行后
              message  当有新的数据报可用时
          socket.address() 会返回一个对象,其中有远程连接的地址,端口,协议(v4/v6);
                  即socket.address().address   socket.address().port   socket.address().family
          socket.bind([port][,address][,callback]);  bind内可选
          或 socket.bind(options[,callback])  options是一个包含有地址端口等信息的对象
          socket.bind(4000)
          // 0.0.0.0:4000
            // 当没有端口时,端口随机分配.当没有地址时,地址为0.0.0.0 
            // 好像同localhost用起来没什么区别,未深入研究? 答案在下方
            // 所有接口地址ipv4   0.0.0.0   ipv6   ::0    即会监听所有地址,所以server.address()返回的信息为localhost
    
          // bind(port,address)  端口在前,顺序不能乱
          // bind({address:'fan',port:4000})  通过传一个options对象,可以避免参数顺序不对的情况发生
    
          //  bind后会出发listening事件,并执行bind内的回调函数,所以bind内的回调和监听listen事件选一即可,
          // 如果都有的话都会触发,同时的
    
          socket.close([callback]);
          socket.send(msg,[offset,length,]port,address[,callback])
           注意length的值,当有中文等多字节字符串时,需要使用Buffer.byteLength(str)来确定字节数,
            这里发送的是字节数,而不是字符数.
    
           dgram.createSocket(options[,callback]); options对象,包含type(string)属性和reuseAddr(布尔)属性
           dgram.createSocket(type[,callback]);  type值为udp4或udp6,callback响应message事件
    

    3 assert模块

            var assert = require("assert");
            // assert中可选的msg是当错误时,显示的错误信息
            // assert.notEqual(1,1);
            // assert(false,"it's a false");
            // assert.ok(false,"it's a false");  // assert(val,msg)  等同于 assert.ok(val,msg)
            assert.deepEqual(Error('a'),Error('b'));// 当对象的自身所拥有的属性都相等时,就深度相等
            assert.deepEqual({a:1},{a:'1'}); // 相等,对每个属性的  ==
            // assert.deepStrictEqual({a:1},{a:'1'})  // 不相等,=== 不会进行转换
            assert.equal(1,'1') // 相等   整体的 ==
            assert.notEqual(1,2); // !=
            assert.notStrictEqual(1,'1'); // !==
            // 当ifError() 括号内的值为真时,则抛出错误,及括号内的值,可以用于回调内的error检验
            // assert.ifError('error');
            // assert.ifError(new Error());
            // assert.ifError(0);  // 无错
            // assert.ifError(1);  // 有错
    
            // assert.fail(1,1,"错误原因",'=');   作用是抛出一个错误,文字为第三个参数,如果第三个参数未定义,
            则错误提示为,第一个参数加最后的操作符加第二个参数
            assert.fail(0,0,"hh",'=');
    

    4 一个小技巧

            当有递减发生而又不想出现负值,可以使用return  Math.max(val,0);  来确保返回值不为负数,
            减少了写if判断语句,程序中尽量不出现if语句,让其更流畅的执行
    

    5 EventEmitter部分

            EventEmitter实例的常用方法
            emitter.addListener()
            emitter.getMaxListeners();
            emitter.listenerCount();
            emitter.listeners();
            emitter.on();
            emitter.once();
            emitter.removeAllListeners();
            emitter.removeListener();
            emitter.setMaxListeners();
    
            net.Server会在收到新的连接时发送'request'事件,fs.ReadStream会在打开文件时发送'open'事件
            stream.Readable对象会在每次读取数据时发送'data'事件
    
            myEmitter.emit("eventName",'a','b');可以传多个参数,只要响应的回调函数接收处理就行
  • 相关阅读:
    Windows API一日一练(55)FlushFileBuffers和SetFilePointer函数
    JDBC连接MySQL数据库及演示样例
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV
    DB9 公头母头引脚定义及连接
    第二届战神杯线上编程挑战赛月赛第一题:回文数
    白话经典算法系列之七 堆与堆排序
    开发人员程序猿10大聚集地
    对不起,说句粗话——这个太屌了,windows1.0安装程序(附下载)
    Arduino入门套件 Arduino UNO R3
  • 原文地址:https://www.cnblogs.com/iamhenanese/p/6182433.html
Copyright © 2011-2022 走看看