Node.js中的事件觸發器所引發的思考
今天在看 Node.js 文檔的時候講到事件觸發器,其中的 emit 方法讓我想到了 Vue 中的自定義事件,藉此我對 Vue 又有了新的理解,所以將我的理解記錄下來,留作學習筆記。
Node.js中的事件觸發器
Node.js 為我們提供了一個事件模塊:EventEmitter,我們可以用它來處理事件
const EventEmitter = require('events') const eventEmitter = new EventEmitter()
eventEmitter 對象上有兩個方法:on 和 emit
on 用於添加自定義事件,註冊回調函數
emit 用於觸發事件,並將參數傳遞給回調函數
eventEmitter.on('start', (e) => { console.log(e) }) eventEmitter.emit('start', 'started')
控制檯將會打印 started
Vue中的自定義事件
給組件添加自定義事件,下面示例代碼中的 enlarge-text 事件就是我們自己定義的事件,onEnlargeText 則是事件觸發時所要執行的回調函數,這裡的 onEnlargeText 是一個函數指針,指向 methods 中所定義的 onEnlargeText 函數。既然是回調函數,所以可能會有參數傳給它,那麼自定義事件的回調函數中的參數是誰傳遞給它的,具體含義又是什麼呢?
methods: { onEnlargeText: function (enlargeAmount) { this.postFontSize += enlargeAmount } }
子組件事件處理中可以通過內建的 「$emit」 方法傳入父組件自定義事件名來觸發這個自定義事件,並且通過 「$emit」 的第二個參數將需要傳遞給父組件的數據拋出,這樣,自定義事件的回調函數中的參數來源也就明白了,就是 「$emit」 方法的第二個參數,這裡可以直接拋出一個更加靈活的對象。
Enlarge text
到這裡我們可以看到,Vue 中的自定義事件和 Node.js 中的事件觸發器的理念非常相似,Vue 中自定義事件的註冊是在父組件中完成的,而觸發是在子組件中完成的。至此,就完成了對 Vue 自定義事件的解釋。
參考資源
nodejs.cn/learn/the-n…
cn.vuejs.org/v2/guide/co…
[qp18502452 ] 從Node.js事件觸發器到Vue自定義事件的深入講解已經有278次圍觀