前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >越写悦快乐之Vue项目如何集成EventBusVue Bus

越写悦快乐之Vue项目如何集成EventBusVue Bus

原创
作者头像
前端小tips
发布2021-11-30 15:52:39
3270
发布2021-11-30 15:52:39
举报
文章被收录于专栏:前端文章小tips

今天的越写悦快乐之系列文章为大家带来Vue项目如何集成EventBus。有过Vue开发经验的小伙们都知道,多个组件之间进行数据的传递或者共享在Vue项目中很是常见,我们如何在不引入Vuex的情况下该如何共享数据呢?今天的文章我为大家带来这篇文章,希望大家喜欢。

Event是什么

  • Event是HTMLDOM对象中事件的状态,它可以触发页面元素的行为,比如鼠标 / 键盘属性、事件句柄、以及多个浏览器支持的标准Event事件。
  • 在Vue中表示一个Vue实例的方法,比如$on$off$emit

开发环境

  • Window 10.0.17763
  • Node 10.15.3
  • Yarn 1.16.0
  • Vue 2.6.10

接入步骤

添加依赖

  • CDN方式 <!-- development version --> <script src="https://cdn.jsdelivr.net/npm/vue-bus/dist/vue-bus.js"></script> <!-- production version --> <script src="https://cdn.jsdelivr.net/npm/vue-bus/dist/vue-bus.min.js"></script>
  • NPM方式

npm install vue-bus --save

  • YARN方式

yarn add vue-bus -S

引入

我们在项目的入口文件src/main.js中使用Vue.use()来挂载到Vue对象上,可参考如下写法:

代码语言:javascript
复制
import Vue from 'vue'
import VueBus from 'vue-bus'
​
Vue.use(VueBus)

使用

最后我们在组件文件Event.vue中提供的方法(组件生命周期)中声明和监听Bus,下面给出一个完整的Vue组件的定义:

代码语言:javascript
复制
<template>
  <div>
    <van-nav-bar 
      :title="pageTitle" 
      fixed/>
  </div>
</template>
​
<script>
import { NavBar, Toast } from 'vant'
export default {
  name: 'Event',
  components: {
    [NavBar.name]: NavBar,
    [Toast.name]: Toast
  },
  data() {
    return {
      // 页面标题
      pageTitle: '我',
    }
  },
  created() {
    this.$bus.on('add-todo', this.addTodo);
  },
  beforeDestroy() {
    this.$bus.off('add-todo', this.addTodo);
  },
  methods: {
    addTodo() {
      this.$bus.emit('add-todo', { text: this.newTodoText });
      this.newTodoText = '';
    }
  }
}
</script>
​
<style lang="less" scoped>
.van-cell-group {
  margin-top: 48px;
}
</style>

那我们在组件创建和销毁的过程中检测addTodo方法的调用,也就是精确控制页面的行为。

参考

当然我们也可以从Vue中创建一个Bus对象,然后绑定到一个Vue实例上,然后在组件中使用this.$bus.on方法来注册事件。

个人收获和感想

通过以上知识点的梳理,我们知道了父子组件之间如何进行数据通信,以及不同组件之间如何共享数据,并通过合适的架构设计来保证业务中数据的共享和流动,同时为后续的升级迭代提供可扩展的支持和平滑升级,我相信除了这种方式外,也会有其它数据通信的方式,在前端领域不断更新变化的时代,我们只有深入底层理解原理,再加上一定经验的实践会给我们业务的发展提供充分有力的保障,更能打破信息壁垒,通过不同层次的学习方式来努力提升技术水平,构建更加稳定安全的产品或者服务,我相信产品的最大价值就是为用户不断创造价值,对此我深信不疑,更希望大家保持学习的热情,完善自己的知识技术体系,打造属于我们自己的平台或者产品。若是我的文章对你有所启发,那将是我莫大的荣幸。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • Event是什么
  • 开发环境
  • 接入步骤
    • 添加依赖
      • 引入
        • 使用
        • 参考
        • 个人收获和感想
        相关产品与服务
        内容分发网络 CDN
        内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档