eventbus-cjs
eventbus-cjs 是一个基于JavaScript装饰器(Decorator)实现的通信库, 支持Vue / React等常用框架, 支持node.js
使用方法
1. 安装
npm i eventbus-cjs --save
Babel 转码器的支持
安装 babel-plugin-transform-decorators-legacy
npm i babel-plugin-transform-decorators-legacy -D
配置 .babelrc 文件
"plugins":
如果是使用 create-react-app 创建的项目,需要先弹出 webpack 配置
npm run eject
安装 babel-plugin-transform-decorators-legacy,在 package.json 中配置 babel
"babel":
vue-cli 3.x 以默认支持 Decorator。
2. 引入 eventbus-cjs
;
修饰器
属性方法修饰器
类修饰器
3. 使用
@emit
发送消息
@ { return 'send ' + msg;};
@on
监听消息, 注意在Vue属性方法上监听,vue.methods中的方法无法监听
@ { };// vue@register{ }@{ // 和生命周期函数相似的 this}
@once
监听消息,只执行一次, 注意在Vue属性方法上监听,vue.methods中的方法无法监听
@ { console;};
@remove
移除当前对象监听的事件
@'onMessageA'// @remove('event_a', 'event_b')('onMessageA', 'onMessageB')// @remove('event_a', 'event_b')(['onMessageA1', 'onMessageA2'])// @remove('event_a', 'event_b')(['onMessageA1', 'onMessageA2'], 'onMessageB')// @remove('event_a', 'event_b')()// @remove()() //释放掉当前对象所监听的所有事件,等同于 @unregister { }// vue@{ }
@register
@register 和 @unregisster 最好同时配置
Vue中必须进行注册才能正确监听消息,需在生命周期方法上注册,越早越好
// react@register // vue @register { }
通过@register修饰的对象可以直接通过 this.$emitter 对象发送、接收消息
this$emiiter;this$emiiter
@unregister
释放掉当前对象所监听的所有事件
@unregister { }// vue@unregister{ }