Node.js中的事件触发器所引发的思考Node.js中的事件触发器所引发的思考Node.js中的事件触发器所引发的思考今天在看 Node.js 文档的时候讲到事件触发器,其中的 emit 方法让我想到了 Vue 中的自定义事件,借此我对 Vue 又有了新的理解,所以将我的理解记录下来,留作学习笔记。Node.js中的事件触发器Node.js中的事件触发器Node.js中的事件触发器Node.js 为我们提供了一个事件模块:EventEmitter,我们可以用它来处理事件
const EventEmitter = require('events')
const eventEmitter = new EventEmitter()
const EventEmitter = require('events')
const eventEmitter = new EventEmitter()eventEmitter 对象上有两个方法:on 和 emit

on 用于添加自定义事件,注册回调函数

emit 用于触发事件,并将参数传递给回调函数


on 用于添加自定义事件,注册回调函数emit 用于触发事件,并将参数传递给回调函数


eventEmitter.on('start', (e) => {
console.log(e)
})
eventEmitter.emit('start', 'started')
eventEmitter.on('start', (e) => {
console.log(e)
})
eventEmitter.emit('start', 'started')控制台将会打印 startedVue中的自定义事件Vue中的自定义事件Vue中的自定义事件给组件添加自定义事件,下面示例代码中的 enlarge-text 事件就是我们自己定义的事件,onEnlargeText 则是事件触发时所要执行的回调函数,这里的 onEnlargeText 是一个函数指针,指向 methods 中所定义的 onEnlargeText 函数。既然是回调函数,所以可能会有参数传给它,那么自定义事件的回调函数中的参数是谁传递给它的,具体含义又是什么呢?
...
@enlarge-text="onEnlargeText">


methods: {
onEnlargeText: function (enlargeAmount) {

this.postFontSize += enlargeAmount
}
}
...
@enlarge-text="onEnlargeText">


methods: {
onEnlargeText: function (enlargeAmount) {

this.postFontSize += enlargeAmount
}
}子组件事件处理中可以通过内建的 「$emit」 方法传入父组件自定义事件名来触发这个自定义事件,并且通过 「$emit」 的第二个参数将需要传递给父组件的数据抛出,这样,自定义事件的回调函数中的参数来源也就明白了,就是 「$emit」 方法的第二个参数,这里可以直接抛出一个更加灵活的对象。

到这里我们可以看到,Vue 中的自定义事件和 Node.js 中的事件触发器的理念非常相似,Vue 中自定义事件的注册是在父组件中完成的,而触发是在子组件中完成的。至此,就完成了对 Vue 自定义事件的解释。参考资源参考资源nodejs.cn/learn/the-n…nodejs.cn/learn/the-n…cn.vuejs.org/v2/guide/co…cn.vuejs.org/v2/guide/co…总结总结总结