「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程

简介: 「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程

QQ截图20220525213631.png


前言


上一篇文章写了 Vue 中的自定义事件,自定义事件是全局事件总线基础。我在上一篇文章中埋下了一个小小的伏笔。如下图:


QQ截图20220525213725.png


我说过,在Vue中如果我们用(@orv-on )给组件绑定上一个自定义事件,其本质就是给子组件VueComponentvc绑定一个事件,然后子组件通过this.$emit()触发,父组件监听到再执行回调方法。这种也只适合于父子组件之间通信,对于兄弟组件来说,仍然无法非常方便的通信。


那全局事件总线是什么样的呢?


一、全局事件总线前述


提供一个思考方向:


微信截图_20220525213750.png


其他组件同样如此。


那么到这一步,我们要明白一件事情哈,全局事件总线,全局两个字,意思是在全局都能够访问到。并且能够绑定方法呢?


xxxx中保证要能够有$on、$off、$emit这些方法,才能够实现组件间通信。


那么只有哪里有??


我们之前给子组件绑定自定义事件的时候,其本质是不是给子组件的实例对象new VueComponent绑定上一个自定义事件。


在这个全局事件总线中,我们就不能再给每个组件的实例对象来绑定自定义事件了,而是要将自定义事件绑定到一个全部组件都能够访问的对象上。


那么那个对象大家都能够访问?看下图吧。


微信截图_20220525213816.png


---图:来自于尚硅谷-张天宇老师


我们将它放在vue原型上,那么全局事件总线就能够做到任意间组件通信拉。


二、安装全局事件总线


我们弄明白要去找谁了,就要将它定义出来,不然怎么用啊。


标准定义如下:


import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
// 关于全局总线的使用说明
// 使用全局总线的时候,更好的应用是在兄弟组件、祖孙组件之间,这些组件他们并不能做到直接通信,这个使用全局事件总线会方便很多
new Vue({
  render: h => h(App),
  // beforeCreate 位于数据挂载之前的生命周期函数
  beforeCreate () {
    // 安装全局事件总线   $bus就是当前应用的vm  这里的this就是当前的new Vue()
    Vue.prototype.$bus = this
  }
}).$mount('#app')


beforCreate()方法


是众多生命周期中最前面的一个。在此时,它的this就是当前的vue.


微信截图_20220525213849.png


三、使用全局事件总线


1、接收数据:A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。即是图示中的第一步。


// 回车增加一个todo
addTodo (todo) {
    this.todos.unshift(todo)
},
    // 判断勾选不勾选
    checkTodo (id) {
        this.todos.forEach((todo) => {
            if (todo.id === id) todo.done = !todo.done
        })
    },
        // 删除一个todo
        deleteTodo (id) {
            this.todos = this.todos.filter(todo => todo.id !== id)
        },
            // 全选全不选
            checkAllTodos (done) {
                this.todos.forEach((todo) => { todo.done = done })
            },
                // 清除所有已完成的任务
                clearDoneTodos () {
                    this.todos = this.todos.filter(todo => !todo.done)
                }
},
    // 在加载完成后就进行全局总线的绑定
    mounted () {
        this.$bus.$on('addTodo', this.addTodo)
        this.$bus.$on('checkTodo', this.checkTodo)
        this.$bus.$on('deleteTodo', this.deleteTodo)
    },


2、提供数据:this.$bus.$emit('xxxx',数据)


methods: {
    add () {
      // 1. 检查输入合法性
      const title = this.title.trim()
      if (!title) {
        alert('请输入内容')
        return
      }
      const id = uuidv4()
      // 2. 根据输入生成一个todo对象
      const todo = { id, title, done: false }
      // 3. 添加到todos
      this.$bus.$emit('addTodo', todo)
      // 4. 清除输入
      this.title = ''
    }
  }
}


注意:最后在beforeDestory钩子中,用$off去解绑当前组件所用到的事件。


如下图:


微信截图_20220525213927.png


解绑有多种方式,$off() 不写参数,是直接解绑全部


一个参数$off('xxx')是解绑一个,解绑多个可以写成$off(['xx','xxx'])


后语


大家一起加油!!!如若文章中有不足之处,请大家及时指出,在此郑重感谢。


纸上得来终觉浅,绝知此事要躬行。

大家好,我是博主宁在春主页

一名喜欢文艺却踏上编程这条道路的小青年。

希望:我们,待别日相见时,都已有所成


目录
相关文章
|
20天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
155 18
|
1月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
96 3
|
2月前
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
101 17
|
1月前
|
移动开发 缓存 前端开发
深入理解前端路由:原理、实现与应用
本书《深入理解前端路由:原理、实现与应用》全面解析了前端路由的核心概念、工作原理及其实现方法,结合实际案例探讨了其在现代Web应用中的广泛应用,适合前端开发者和相关技术人员阅读。
|
3月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
102 41
|
2月前
|
前端开发 开发者
本文将深入探讨 BEM 的概念、原理以及其在前端开发中的应用
BEM(Block-Element-Modifier)是一种前端开发中的命名规范和架构方法,旨在提高代码的可维护性和复用性。通过将界面拆分为独立的模块,BEM 提供了一套清晰的命名规则,增强了代码的结构化和模块化设计,促进了团队协作。本文深入探讨了 BEM 的概念、原理及其在前端开发中的应用,分析了其优势与局限性,为开发者提供了宝贵的参考。
67 8
|
2月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
45 1
|
2月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
107 1
|
2月前
|
监控 前端开发 jenkins
Jenkins 在前端项目持续部署中的应用,包括其原理、流程以及具体的实现方法
本文深入探讨了Jenkins在前端项目持续部署中的应用,涵盖其基本原理、流程及具体实现方法。首先介绍了Jenkins的基本概念及其在自动化任务中的作用,随后详细解析了从前端代码提交到生产环境部署的全过程,包括构建、测试、部署等关键步骤。最后,强调了持续部署中的代码质量控制、环境一致性、监控预警及安全管理等注意事项,旨在帮助开发者高效、安全地实施持续部署。
78 5
|
2月前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。