0
我试图创建一个基于出来的localStorage的快速发布 - 订阅系统。这个过程让我意识到,我对ES6模块的工作原理并不完整。ES6模块 - 全局变量
const subscribers = {};
export default {
subscribe (key, callback) {
if (!Array.isArray(subscribers[key])) {
subscribers[key] = [callback];
} else {
subscribers[key] = [...subscribers[key], callback];
}
},
publish (key, value) {
window.localStorage[key] = value;
subscribers[key].forEach(cb => cb(value));
}
};
无论何时我想订阅/发布到localStorage中的某个密钥,我都会导入此模块。问题在于,每次导入模块时,订户对象都会重新初始化。
有没有办法做到留住用户对象,不污染窗口?我认为导入语句只会在第一次导入时执行一次文件。
谢谢。
由于浏览器目前不支持模块,您使用的是哪种打包系统? –
Webpack + Babel + ES6模块 –
你能告诉你如何使用它吗?所有进口应该共享相同的模块状态(当我在babel-node中测试时)。 –