12月14日清单

1 readline模块

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

2 dgram模块

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

3 assert模块

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

4 一个小技巧

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

5 EventEmitter部分

  1. EventEmitter实例的常用方法
  2. emitter.addListener()
  3. emitter.getMaxListeners();
  4. emitter.listenerCount();
  5. emitter.listeners();
  6. emitter.on();
  7. emitter.once();
  8. emitter.removeAllListeners();
  9. emitter.removeListener();
  10. emitter.setMaxListeners();
  11. net.Server会在收到新的连接时发送'request'事件,fs.ReadStream会在打开文件时发送'open'事件
  12. stream.Readable对象会在每次读取数据时发送'data'事件
  13. myEmitter.emit("eventName",'a','b');可以传多个参数,只要响应的回调函数接收处理就行

一些node模块的学习思考的更多相关文章

  1. node模块加载层级优化

    模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载.但是随着应用规模的加大,目录层级越来越深,若是在某个 ...

  2. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  3. Commonjs规范及Node模块实现

    前面的话 Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于java ...

  4. Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  5. Node.js知识点学习

    Node.js知识点学习 一.基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台.可以说,Node.js开创了javascript模块化开发的先河,早期 ...

  6. 【转】Commonjs规范及Node模块实现

    前言: Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javas ...

  7. node的重点学习笔记(1)————node

    node的重点学习笔记(1)----node 提到node就必须提一下他的npm了,npm是世界上最大的开放源代码的生态系统.通俗来说这就如同亚马逊丛林,要啥物种有啥物种,一个巨大的生态圈,里面有一堆 ...

  8. Request模块入门学习

    使用指令npm install --save request来安装模块,然后使用var request = require('request')完成引用. 对于GET请求,主要是获取目的url中数据. ...

  9. [转]模块化——Common规范及Node模块实现

    Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javascrip ...

随机推荐

  1. [android] 新闻客户端实现左侧导航点击切换

    设置主布局文件,为根布局设置一个id,作为内容区 给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文 当前的Fragment实现OnItemCli ...

  2. CSS学习笔记03 CSS层叠性、继承性、特殊性

    层叠性 所谓层叠性是指多种CSS样式的叠加,也就是说后面设置的样式会层叠(覆盖)之前的样式,层叠性的前提是CSS的选择器的优先级相同,例如,当使用内嵌式CSS样式表定义<p>标记字号大小为 ...

  3. 一:MyBatis知识整理(1)

    一:MyBatis的架构 1.mybatis配置SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文 ...

  4. JavaScriptDay2-简单网页表单验证

    Html部分 <!-- 注册表单 1-用户名 text 2-密码 password 3-确认密码 password 4-性别 radio 5-爱好 hobby 6-籍贯 select-optio ...

  5. python常用模块-01

    1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random()    ...

  6. js知识学习图谱,新手必看

    前端新手学习也不外乎就是Html  css  html5  css3  这是最基本的,学会这些仅仅可以说是会写布局,写网页,不算前端开发,还有最重要的js,jq要学习,我自己java后台转前端,现在复 ...

  7. 学习MVC之租房网站(一)-项目概况

    这儿的MVC是ASP.NET MVC,只用过C#一种语言,后面就直接称呼为MVC了. 一年多没接触MVC后,现在想用MVC做个网站,觉得特别吃力,以前学的仅仅是皮毛,所以闲置了一年后,MVC知识就重新 ...

  8. [JAVA] 重写以及@Override标签

    以前JAVA看的少,最近做项目,对@Override的调用顺序有点疑惑,故查了一些资料.既然查资料了,那就把能看到的知识点整理一下,以供日后学习. 原文地址请保留http://www.cnblogs. ...

  9. 'adb remount'的作用是什么?在什么情况下有用?

    'adb remount' 将 '/system' 部分置于可写入的模式,默认情况下 '/system' 部分是只读模式的.这个命令只适用于已被 root 的设备. 在将文件 push 到 '/sys ...

  10. using 和try/catch区别和注意点

    书上解释: using: 在C#和其他托管语言中,没有自动.决定性的析构方式,而是有一个垃圾收集器,它会在未来的某个时刻释放资源.它是非决定性的,因为我们不能确定这个过程在什么时候发生.忘记关闭数据库 ...