在 Node.js 中,Event是非常核心的模塊,大部分的核心模塊基本上都有用到或者繼承了該模塊。Event模塊和我們之前在Javascript中學(xué)習(xí)的EventTarget接口很類似。對(duì)于該模塊我們能做的不僅僅是簡單的使用還可以在該模塊的基礎(chǔ)上做出擴(kuò)展,你想想JS中的onclick、onmousemove。
不羅嗦,直接上代碼!
因?yàn)槭录K屬于比較抽象的東西,所以不太適合用大篇幅的語言來描述它,所以我決定直接上代碼,先實(shí)現(xiàn)功能看效果再說。下面就一起來體驗(yàn)下這個(gè)模塊的功能吧。
對(duì)自定義類進(jìn)行擴(kuò)展
在前端我們可以對(duì)一個(gè)元素進(jìn)行事件的監(jiān)聽,例如
這種做法實(shí)際上就是在對(duì)待頁面中的DOM對(duì)象添加事件監(jiān)聽,在Node.js中是無法直接為一個(gè)對(duì)象添加事件監(jiān)聽的,因?yàn)槲覀冏远x的類或者對(duì)象都是沒有實(shí)現(xiàn)或繼承 Events 模塊的。
想要使用 Events 模塊就需要先導(dǎo)入該模塊。
接下來就是具體代碼的實(shí)現(xiàn)
以上的代碼就是為了擴(kuò)展咱們自定義類的。
在以上代碼中我們使用了event模塊中的兩個(gè)方法:on(),emit()。 這兩個(gè)方法分別是為了 注冊(cè)事件 與 觸發(fā)事件 的。
- 在event模塊中比較有用的方法遠(yuǎn)遠(yuǎn)不止這兩個(gè),下面列出幾個(gè)較為常用的方法。
- on():注冊(cè)事件,添加被監(jiān)聽的事件名稱到監(jiān)聽器數(shù)組的末尾。
- addListener():同上。
- off():移除事件,從監(jiān)聽器數(shù)組移除被監(jiān)聽的事件名稱。
- removeListener():同上。
- eventNames():返回已注冊(cè)監(jiān)聽器的事件名數(shù)組。 數(shù)組中的值為字符串或 Symbol。
Tips:
因?yàn)槭录母拍钶^為抽象,所以我們大部開發(fā)者并不是很喜歡使用Events模塊實(shí)現(xiàn)監(jiān)聽,更多的時(shí)候我們可能更加喜歡以回調(diào)函數(shù)的方式的完成對(duì)某個(gè)函數(shù)或者方法的監(jiān)聽。
所以我們對(duì) Events 模塊的學(xué)習(xí)其實(shí)并不僅僅是為了將來能在開發(fā)中為自定義類添加事件,更多的其實(shí)為了對(duì) Node.js 的知識(shí)點(diǎn)整體架構(gòu)有一定的了解,了解知識(shí)點(diǎn)的來龍去脈。
學(xué)習(xí)了 Events 之后我們也就可以明白為什么之后學(xué)習(xí)的很多的核心模塊為什么都會(huì)有 on() 和 off() 方法,因?yàn)樗鼈兌际抢^承了 Events 模塊的。
最后大家可以添加我們的前端技術(shù)交流qq群,找群管理要更多前端學(xué)習(xí)資料和教程視頻,前端技術(shù)交流群:791201477 等你來哦~~~