最近在看vue-cli源码时发现好多class了events类,最近在工作中也经常遇到,发现只是知道他是一个类似于观察者的一个东西,但是还没有系统看过这个内置模块。所以今天搞一下。
事件驱动
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。Allows you to build scalable network applications usingJavaScript on the server-side.
这是官方的引用,nodejs是基于事件驱动和非阻塞I/O的方式来设计运行的,在node中大部分的模块的实现都继承了Events类。 比如,文件操作中的fs事件流,网络编程所用到的tcp,http模块等,回想自己写的程序后,会发现很多操作都基于事件驱动,Events类。
那么问题是什么是事件驱动呢?
简单来说,就是通过监听事件的状态变化来做出相应的操作。比如读取一个文件,文件读取完毕,或者文件读取错误,那么就触发对应的状态,然后调用对应的回掉函数来进行处理。
例如文件:
const fs = require('fs');
let rs = fs.createReadStream('1.txt');
// 监听文件打开操作
rs.on('open', function() {
console.log('open');
});
// 监听数据流读取
rs.on('data', function(data) {
console.log