Node事件机制
一、Node事件处理机制
1.事件队列:将事件放入事件队列
2.事件循环机制:对事件队列中的事件进行轮询、检查,依次处理每个事件
3.事件监听:
(1)引入事件模块
(2)创建事件监听对象:EventEmitter
(3)注册监听:监听不同类型的事件(使用on函数)
4.触发事件:使用emit()函数
二、Node全局对象
1.全局变量
(1)__filename:指的是当前正在执行的脚本文件的名字。(以绝对路径显示文件名)
(2)__dirname:指向当前运行的脚本所在的路径。(以绝对路径显示文件所在目录)
2.全局对象
(1)console实例对象:
console.log(‘字符串’):输出到标准终端
console.error():输出错误信息
3.process对象:进程对象
(1)process.stdout:标准输出对象,该对象下的write方法和console.log方法作用相同
(2)process.stdin:输入对象,利用该对象可以从标准输入终端向node程序输入数据
4.全局函数
(1)setTimeout(cb,ms):cb表示的是一个回调函数,ms表示的是时间(单位是毫秒),表示至少多少毫秒以后调用函数
,返回的是一个可以清除的计时器对象
(2)clearTimeout(计时器对象):清除计时器
(3)setInterval(cb,ms):重复调用
(4)clearInterval(t):清除由setInterval()创建的计时器
(5)setImmediate(cb):即使计时器,没有时间间隔,创建即运行,返回的也是一个计时器对象
(6)clearImmediate(计时器对象):清除由setImmediate()创建的计时器对象
三、Buffer数据类型(对象)
1.Buffer是专门用于处理二进制数据的对象(接口):直接使用,不需要导入。
2.Buffer对象又称为缓冲区对象,它有一个构造函数,由构造函数创建的对象,v8引擎会为其分配一块内存
3.Buffer中存放的数据值是0~255之间的整数值,即一个字节的数据
4.创建Buffer实例的方法:
(1)使用new运算符
var 变量 = new Buffer([参数]);
(2)使用from函数
// 1.使用Buffer.from()创建
const buf1 = Buffer.from([1,2,3]);
console.log(buf1);
(3)使用alloc函数
// 2.创建一个长度为10的缓冲区,并使用0填充
const buf3 = Buffer.alloc(10);
console.log(buf3);
5.将Buffer中的数据转换为字符串:使用toString()函数,需要指定字符集(编码格式)
const buf6 = Buffer.from('tést');
console.log(buf6.toString('utf8',0,3));
6.将Buffer转换为JSON对象
(1)JSON(JavaScript Object Notation)对象:是前后端数据交换的常用格式,是以key-value的方式保存数据,由于体积小,创建方便,解析简单,所以被广泛使用。只要应用程序需要将结构化信息作为文本进行交换或存储,即可使用它。
(2)使用node的JSON对象进行转换:
const buf7 = Buffer.from([0x1,0x2,0x3,0x4,0x5]);
var json = JSON.stringify(buf7);
console.log(json); //{"type":"Buffer","data":[1,2,3,4,5]}
console.log(typeof json); //string
7.向Buffer中写入数据
const buf8 = Buffer.alloc(256);
let len = buf8.write('\u00bd+\u00bc=\u00be',0); //write函数的返回值是写入的字节数
console.log(`${len}个字节:${buf8.toString('utf8',0,len)}`);
8.从Buffer实例读取数据
const buf9 = Buffer.from([-1,5]);
console.log(buf9);
console.log(buf9.readInt8(0));