Node.js第三天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js第三天相关的知识,希望对你有一定的参考价值。
一、event事件:又称为发布订阅者和观察者
进过一天的学习,总结为以下几点
1. 获取事件模块
1 var events = require("events").EventEmitter;//旧版的写法 2 var events = require("events"); 3 //注意,这里使用监听事件还要用到util模块 4 var util = require("util"); 5 //再给事件的监听者继承继承event的原型,下面的例子中会有介绍
2.可以设置监听者最大个数
goddess.setMaxListeners(10);//这里假设一个事件的发布者为goddess
3.绑定监听事件
//第一种绑定方式 goddess.on("ele",function() { console.log("我想吃芒果"); }); //第二种绑定方式 goddess.addListener("ele"), function() { console.log("我想吃芒果班戟"); }); //第三种绑定方式 goddess.prependListener("ele",function() { console.log("我想吃芒果干"); });
(1)还可以绑定一次事件,只会触发一次
goddess.once("run", function() { console.log("我去运动减肥"); });
4.发送事件(事件触发)
goddess.emit("ele");
goddess.emit("run");
运行之后出现以下效果:
5.移除事件,移除事件要在发送之前移除哦,不然发送的时候原来的事件还在的哦
//移除单个事件,移除事件要和添加时一致哦 goddess.removeListener("ele",function(){}); //移除多个同一名字的事件 goddess.removeListenerAll("ele"); //移除所有的事件 goddess.removeListenerAll();
接下来举一个?? :
一个女神,她告诉男孩们她肚子饿了,男孩们知道之后一些列的反应
1.获取事件模块(因为要用到原型的继承所以这里还引入了util模块)
2.创建两个类
3.给事件的发布者添加监听事件
4.发送事件
1 var events = require("events"); 2 var util = require("util"); 3 4 //创建事件的发布者以及事件的观察者 5 function Girl() { 6 // 假设女神饿了 7 } 8 9 function Boy(name, response) { 10 this.name = name; 11 this.response = response; 12 } 13 14 util.inherits(Girl,events);//继承来自于events原型方法 15 var goddess = new Girl(); 16 17 var boy1 = new Boy("备胎1",function() { 18 console.log("点饿了么"); 19 }); 20 var boy2 = new Boy("备胎2",function() { 21 console.log("上美团点外卖"); 22 }); 23 var boy3 = new Boy("备胎3",function() { 24 console.log("带你去吃西餐"); 25 }); 26 27 //设置监听者最大个数 28 goddess.setMaxListeners(10); 29 30 //只是绑定监听着 31 goddess.on("ele",boy1.response); 32 goddess.addListener("ele",boy2.response); 33 goddess.prependListener("ele",boy2.response); 34 goddess.on("ele",function() { 35 console.log("天猫超市来一箱"); 36 }); 37 38 //once 绑定的事件只会触发一次,也就是只能emit一次,如果有多个die的emit只有第一个起作用哦,后面的都无效 39 goddess.once("die",function() { 40 console.log("女神死了"); 41 }); 42 43 //移除事件(单个事件) 44 goddess.removeListener("ele",boy2.response); 45 46 //移除所有事件 47 // goddess.removeAllListeners(); 48 49 //移除名字为ele的所有事件 50 // goddess.removeAllListeners("ele"); 51 52 //发送事件(事件触发) 53 goddess.emit("ele"); 54 goddess.emit("die");
执行结果如下:
二、buffer:缓存区,暂时存放在内存里的一段数据
1.出现的原因:javascript本身是二进制的传输,只有字符串,为了保存和处理二进制数据
2.buffer是数组的形式,数组中的每一项都是以16进制展示的八位字节数
3.buffer是一个类,它能实例出一个全局对象,而且不需要引入
4.buffer的每一位的取值范围是0~255
//直接创建,由系统自动生成 var buffer = new Buffer(12);//参数为number,表示buffer的长度 //填充值 buff.fill(225,3,6); //从第4个数开始到第6个数为 ff //通过数组创建 var buffer2 = new Buffer([1,34,074,0xa6]); console.log(buffer2); //输出 01 22 3c a6 //可以将字符串转换为16进制数 var buffer3 = new Buffer("今天天气很好"); console.log(buffer3); //输出 e4 bb 8a e5 a4 a9 e5 a4 a9 e6 b0 94 e5 be 88 e5 a5 bd //concat进行数据拼接,转换成字符串,但是占用的内存高 Buffer.concat([拼接数组1,拼接数组2]).toString(); //推荐使用StringDecoder var StringDecoder = require("string_decode").StringDecoder; var decoder = new StringDecoder(); console.log(decoder.write(buffer)); console.log(decoder.write(buffer)); //将第一个和第二个buffer拼接起来
以上是关于Node.js第三天的主要内容,如果未能解决你的问题,请参考以下文章