Lastor
@Lastor
Tue, Sep 26, 2023 8:53 AM
coding
體會到 eventBus 這機制,有多難追了,很大原因是跟現在前端主流的 props 傳遞機制不一樣,就得花時間去看這段是怎麼跑的......
Lastor
@Lastor
Tue, Sep 26, 2023 8:54 AM
eventBus 是原本 Vue2 有的一種機制,原理上其實就是跨組件的事件監聽器
Lastor
@Lastor
Tue, Sep 26, 2023 8:55 AM
Vue3 把這個功能拿掉了,如果還是想要用,可以安裝一些 for 瀏覽器的,類似 Node.js 的 EventEmitter 的套件
Lastor
@Lastor
Tue, Sep 26, 2023 8:56 AM
但這種事件監聽器,emit 之後,在所有地方都可以用 on 監聽
Lastor
@Lastor
Tue, Sep 26, 2023 8:56 AM
所以光看到 on or emit,根本無法知道到底是從哪傳來的,或是會傳去哪
Lastor
@Lastor
Tue, Sep 26, 2023 8:57 AM
只能靠 VScode 去搜尋 event name 才找得到
Lastor
@Lastor
Tue, Sep 26, 2023 8:58 AM
而且這玩意,會跟 dev server 的熱更新有點衝突,每次熱更新 update 都會重複掛監聽,導致效能被消耗殆盡
Lastor
@Lastor
Tue, Sep 26, 2023 8:59 AM
還要為這個去弄 clear 監聽器,會寫得很煩
Lastor
@Lastor
Tue, Sep 26, 2023 9:00 AM
這類機制雖然有時候會比 props 傳遞要方便非常多,但是代價也不小
Lastor
@Lastor
Tue, Sep 26, 2023 9:00 AM
除非真的沒辦法,不然還是少用比較好
Lastor
@Lastor
Tue, Sep 26, 2023 9:03 AM
話說,Vue3 理論上可以用 reactive() 裡面塞 function,局部共用來實現類似的功能就是。而這個可以從 import 那邊去得知來源,應該會比較好維護
Lastor
@Lastor
Tue, Sep 26, 2023 9:03 AM
雖然我沒嘗試過就是,搞不好實驗下去會有其他問題也不一定
l• ܫ•) Davyキュルッ
@david50407
Tue, Sep 26, 2023 10:53 AM
Tue, Sep 26, 2023 10:56 AM
可以自己寫一個 event bus 不難
載入新的回覆
可以自己寫一個 event bus 不難