浏览器js和nodeJS在event上的区别
-
后端继承自EventEmitter的实例,由实例进行监听和触发,而前端是dom元素
-
前端有些和浏览器规定好的事件名称,当然前端也可以自定义事件名,但后端一般都是自定义事件名称,规定好的事件名相对来说少很多,例如error事件就是规定好的
-
前端通常通过UI操作来触发,后端通过 实例.emit('自定义事件') 的方式来触发,规定好的事件例如error事件当实例出错的时候会自动触发,这个事件既能手动触发也能自动触发
4.nodeJS中事件的触发第一个参数是事件名,往后的参数就是事件监听器回调函数接收到的参数
事件的监听
const EventEmmitter = require('events');
class CustomEvent extend EventEmmitter {
}
const ce = new CustomEvent();
function fn1 () {
console.log('fn1');
}
function fn2 () {
console.log('fn2');
}
//监听
ce.on('test', fn1);
ce.on('test', fn2);
//只监听一次
ce.once('test', fn1);
//派发
ce.emit('test');
//移除
//第一种方式
ce.removeListener('test', fn1);
//第二种方式
ce.off('test', fn2);
//第三种方式,一次性移除这个事件上所有的listener
ce.removeAllListeners('test');
//默认一个实例绑定最多的监听器数量
ce.defaultMaxListeners
fs
读文件
fs.readFile
fs.readFileSync
写文件
fs.writeFile
fs.writeFileSync
重命名
fs.rename('./index.html', 'index1.html', (err) => {
if(err) throw err;
})
删除
fs.unlink('./index1.html', err => {
if(err) throw err;
})
查文件夹有哪些文件(或者说读取文件夹)
fs.readdir('./', (err, files) => {
if(err) throw err;
console.log(files);
})
创建文件夹
fs.mkdir('./index', (err) => {
if(err) throw err;
console.log('done');
})
移除文件夹
fs.rmdir('./index', (err) => {
if(err) throw err;
console.log('done');
})
文件夹或者文件监视
fs.watch('./', {
recursive: true
}, (eventType, fileName) => {
console.log(eventType, fileName);
})
监听器回调绑定到由<fs.FSWatcher>触发的 'change' 事件,但它与 eventType 的 'change' 值不同。也就是说eventType为rename或者change也好,FSWatcher类都会触发change事件,就是因为触发了change事件回调函数才会触发