最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解mitt和bus有什么區(qū)別

 更新時間:2026年03月04日 11:39:25   作者:李劍一  
事件總線作為一種全局的組件通信方法,符合訂閱發(fā)布模式,由于其簡單有效的使用方式,受到部分開發(fā)者的歡迎,這篇文章主要介紹了mitt和bus有什么區(qū)別的相關(guān)資料,需要的朋友可以參考下

前言

之前沒太關(guān)注過組件之間的數(shù)據(jù)傳遞問題,一般做項(xiàng)目如果是Vue2.x版本,直接用Vuex。

如果是Vue3.x版本,直接用Pinia?;旧虾苌儆?code>Bus(事件總線),也沒太關(guān)注過其他方案。

問題

最近做一個不大不小的項(xiàng)目,本來想著直接用 Pinia 了,但是頁面有點(diǎn)兒少,用 Pinia 感覺有點(diǎn)兒殺雞用牛刀。

所以就選擇用 props 傳值的方式,但是兄弟組件的傳值害慘我了。

遂看一下網(wǎng)上的方案,兄弟組件的傳值大概有三種手段:

  1. 最傳統(tǒng)的 Props 傳值的方案。
  2. 簡單粗暴的 Bus 事件總線方案。
  3. 封裝好的庫 Mitt 傳參方案。

Props方案

最為傳統(tǒng)的傳參方案,父子組件之間傳參非常好用。封裝組件也是相當(dāng)哇塞,但是在兄弟組件之間傳參太過復(fù)雜。

尤其是從 A 組件的子組件 A1 上,傳遞參數(shù)到 B 組件的子組件 B1 上。層層轉(zhuǎn)發(fā)。

寫起來太過麻煩,而且用起來也不方便,每改一個參數(shù)需要四個組件同時修改。

Bus方案

我個人在團(tuán)隊(duì)內(nèi)部不喜歡大家使用 Bus ,原因很簡單,不易維護(hù)。

定義的 Bus 如果在好幾個地方使用很難得到有效的控制,出現(xiàn)問題也很難快速定位。

并且我發(fā)現(xiàn)好幾個小兄弟在寫 Bus 的時候都忘記使用 $off 移除監(jiān)聽了,很容易造成應(yīng)用內(nèi)存泄漏。

另外就是在開發(fā)過程中 VsCodeWebStorm 是不支持通過 ctrl + 點(diǎn)擊 尋找對應(yīng)方法的,開發(fā)體驗(yàn)也一般情況。

最最重要的是,在Vue3.x版本中已經(jīng)正式移除了 Bus 的API。

Mitt方案

Mitt這個方案我目前在正式的項(xiàng)目中還沒用過,只是簡單在幾個Demo中嘗試用了用。

怎么說呢,非常簡潔!

一共就三個方法:

import mitt from 'mitt'
const emitter = mitt();
// 發(fā)送事件
emitter.emit('custom-event', 'Hello from A')
// 接收事件
emitter.on('custom-event', handler)
// 移除事件
emitter.off('custom-event', handler)

能看得到的優(yōu)點(diǎn):小(200多kb)、無依賴、Ts友好,但是缺點(diǎn)也同樣明顯:

  • 創(chuàng)建的事件全局共享,可能存在事件名沖突。
  • 需要手動調(diào)用 off 移除監(jiān)聽。
  • 調(diào)試追蹤困難
  • 異步問題

Mitt和Bus的區(qū)別

看Mitt的缺點(diǎn)和Bus的缺點(diǎn)幾乎一致,那么他倆到底有區(qū)別嘛?

還是說尤老師看到現(xiàn)成的直接對這部分代碼不重寫了???

先說答案:Mitt和Bus是存在本質(zhì)性區(qū)別的

原理不同

Mitt是一個獨(dú)立的Js庫,無任何相關(guān)依賴,在任何環(huán)境都可以使用。Vue、React、原生Js等都能用。

在Mitt的內(nèi)部手動維護(hù)了一個事件的映射表Map<string, Function[]>。

而Bus依賴于Vue2.x的內(nèi)部API,其原理上是基于Vue的觀察者模式。

使用不同

雖然他們大部分的用法非常相似,比如說事件發(fā)送,一個用 $emit,一個用 emit()。

但是也存在很多區(qū)別。

Bus 不支持通配符監(jiān)聽,而 mitt 可以通過 mitt.on('*', ()=>{}) 的方式實(shí)現(xiàn)通配符的監(jiān)聽。

并且 mitt 支持Ts,這是最關(guān)鍵的。畢竟現(xiàn)在絕大多數(shù)的新應(yīng)用在開發(fā)的時候都要求使用Ts。

總結(jié)

如果是老項(xiàng)目,我仍然推薦原來用啥就用啥。

如果是新項(xiàng)目,并且上了Vue3.x版本,那么你除了mitt恐怕沒有別的選擇(小項(xiàng)目)。Vue3.x 版本移除了 Bus!

另外需要強(qiáng)調(diào)的是 mitt臨時通信,也就是說它只是一個臨時方案。如果你所在的是一個大項(xiàng)目,我勸你仍然穩(wěn)妥的使用 Pinia。

到此這篇關(guān)于mitt和bus有什么區(qū)別的文章就介紹到這了,更多相關(guān)mitt和bus區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-router 學(xué)習(xí)快速入門

    vue-router 學(xué)習(xí)快速入門

    本篇文章主要介紹了vue-router 學(xué)習(xí)快速入門,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • vue+elementUI中el-radio設(shè)置默認(rèn)值方式

    vue+elementUI中el-radio設(shè)置默認(rèn)值方式

    這篇文章主要介紹了vue+elementUI中el-radio設(shè)置默認(rèn)值方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • vue組件通信的多種方法詳解

    vue組件通信的多種方法詳解

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • vue中組件如何使用vue-quill-editor

    vue中組件如何使用vue-quill-editor

    這篇文章主要介紹了vue中組件如何使用vue-quill-editor問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • vue中的封裝常用工具類

    vue中的封裝常用工具類

    這篇文章主要介紹了vue中的封裝常用工具類,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue Official 手動更改插件顯示語言的解決方案

    Vue Official 手動更改插件顯示語言的解決方案

    文章介紹如何通過修改Volar插件內(nèi)部文件,使英文版VS Code顯示中文代碼提示,需手動調(diào)整language-server.js中的語言設(shè)置,但因文件經(jīng)壓縮混淆,操作復(fù)雜且無官方支持,存在兼容性風(fēng)險(xiǎn)
    2025-07-07
  • vuejs+element-ui+laravel5.4上傳文件的示例代碼

    vuejs+element-ui+laravel5.4上傳文件的示例代碼

    本篇文章主要介紹了vuejs+element-ui+laravel5.4上傳文件的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • 深入淺析Vue不同場景下組件間的數(shù)據(jù)交流

    深入淺析Vue不同場景下組件間的數(shù)據(jù)交流

    探通過本篇文章給大家探討不同場景下組件間的數(shù)據(jù)“交流”的Vue實(shí)現(xiàn)方法,感興趣的朋友一起看看吧
    2017-08-08
  • Vue解決element-ui消息提示$message重疊問題

    Vue解決element-ui消息提示$message重疊問題

    這篇文章主要為大家介紹了Vue解決element-ui消息提示$message重疊問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue3如何解決各場景l(fā)oading過度(避免白屏尷尬!)

    vue3如何解決各場景l(fā)oading過度(避免白屏尷尬!)

    在開發(fā)的過程中點(diǎn)擊提交按鈕,或者是一些其它場景總會遇到loading加載,下面這篇文章主要給大家介紹了關(guān)于vue3如何解決各場景l(fā)oading過度的相關(guān)資料,避免白屏尷尬,需要的朋友可以參考下
    2023-03-03

最新評論

桦甸市| 隆昌县| 商南县| 杂多县| 普定县| 黑河市| 黄龙县| 白山市| 邵武市| 大悟县| 中方县| 柳州市| 沈丘县| 鹤岗市| 华亭县| 平湖市| 庐江县| 阿拉尔市| 肃宁县| 姚安县| 江阴市| 嘉祥县| 筠连县| 保德县| 南通市| 响水县| 庆城县| 余庆县| 汤原县| 福泉市| 江陵县| 象州县| 佛冈县| 绍兴市| 年辖:市辖区| 江阴市| 萨迦县| 海南省| 贵阳市| 利津县| 饶阳县|