一个实现发布订阅/eventbus基础功能的练习Demo
当我尝试实现时遇到的问题
- 为什么两次
impor
导入后,共享的对象却相同?
答 :
import
的执行是将代码静态引入,两次引入应该生成两个互不关联的作用域,事实上也确实如此。
之所以能够共享同一个对象,是因为node的模块机制,我们的代码最后如果打包到同一个chunk中,那么实际上mitt
仅仅只执行了一次,而mitt内部会挂载一个全局对象,故而能够两次导入却共享同一对象内容,完成跨组件的发布和订阅.
文件名描述 | 描述 |
---|---|
a.js | 模块 |
b.js | 模块 |
bus.js | 事件中心 |
mitter.js | 订阅发布工具 |
x.js | 模块 |
mitter.add(事件名,函数) mitter.exec(事件名,参数)