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拼接起来
时间: 2025-01-15 11:18:38

Node.js第三天的相关文章

玩转Node.js(三)

玩转Node.js(三) 上一节对于Nodejs的HTTP服务进行了较为详细的解析,而且也学会了将代码进行模块化,模块化以后每个功能都在单独的文件中,有利于代码的维护.接下来,我们要想想如何处理不同的HTTP请求,而这个处理不同的HTTP请求的东东,就是传说中的路由选择. 路由之说 首先,我们需要清楚的知道,我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码. 因此,我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数.这一

看得懂的 Node.js(三)—— Express 启航

如果看过上一篇<看得懂的 Node.js>,就会发现手动搭建一个 web 服务器还是比较繁琐 而 express 就是一个可以极大地提高开发效率的 web 开发框架 一.创建项目 在 express 4.0 之前,我们使用 npm install -g express 来全局安装 express 但是 4.0 之后,express 的命令行工具被单独分离出来,叫做 express-generator npm install -g express-generator 如果了解过 vue,expr

Node.js(三)【HTTP、作用域、上下文对象】

querystring参数小利器querystring.stringify({name:'lqc',course:['jade','node'],from:''})//输出'name=lqc&course=jade&course=node&from=' querystring.stringify({name:'lqc',course:['jade','node'],from:''},',')//输出'name=lqc,course=jade,course=node,from=' q

node.js 第三天

课程名称 第1天课堂笔记(本课程共8天) 前端与移动开发学院 http://web.itcast.cn 目录 目录................................................................................................................................................................ 2 一.............................

node.js的作用、回调、同步异步代码、事件循环

http://www.nodeclass.com/articles/39274 一.node.js的作用 I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等) node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设

如何发布一个自定义Node.js模块到NPM(详细步骤)

咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着,以极少的文字说明以及极少的代码书写为原则来给大家演示! 文章中上传的模块不具备任何意义! 一.封装node.js模块时的必须项 1.创建package.json 每一个完整封装的node模块,必须含有一个参数明确的package.json文件! 以下为package.json的最精简配置: { "n

mongodb的安装+node.js的安装和测试

一.MongoDB 1.是当前NoSql数据库中比较热门的一种 MongoDB是一个高性能,开源,无模式的文档型数据库 安装mongodb 进行测试 首次安装 1.安装mongodb-win32-i386-3.2.9-signed.msi 2.注意:dbpath这是数据仓库的位置,提前手动建立这样的一个文件夹(c:/data/db) 3.打开win+R,输入cmd,进入到mongodb的bin目录 C:\Program Files\MongoDB\Server\3.2\bin,执行 mongod

OSChina 开源周刊第三十三期 —— Node.js 和 io.js 准备合作!

每周技术抢先看,总有你想要的! 开源资讯 Node.js 和 io.js 准备合作!合久必分,分久必合? Nervana 开源深度学习软件,性能超 Facebook.Nvidia产品 B 站建开源工作组 多 APP 使用其开源项目 Android 新开发技术 Sky:Dart 开发 Android 应用 谷歌红帽及 VMware 宣布支持 CoreOS 容器 Oracle 宣布 Java 7 生命周期终结 Java 9 公布发行计划,明年 9 月发布正式版 IO.js 2.0.0 发布,服务器

Node.JS的表单提交及OnceIO中接受GET/POST数据的三种方法

OnceIO 是 OnceDoc 企业私有内容(文档)管理系统的底层Web框架,它可以实现模板文件.静态文件的全缓存,运行起来完全不需要I/O操作,并且支持客户端缓存优化,GZIP压缩等(只压缩一次),拥有非常好的性能,为您节约服务器成本.它的模块化功能,可以让你的Web进行分布式存储,在一个扩展包里即可包含前端.后端和数据库定义,只需通过添加/删除目录的方式就可实现功能删减,实现真正的模块化扩展.目前 OnceIO 已经开源,本文主要介绍node.js语言中的表单提交及OnceIO中接受GET