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의 키로 구독/게시하고 싶을 때마다이 모듈을 가져 왔습니다. 문제는 모듈 객체를 가져올 때마다 구독자 객체가 다시 초기화된다는 점입니다.
창을 오염시키지 않으면 서 구독자 개체를 유지할 수있는 방법이 있습니까? import 문은 파일을 처음 가져올 때만 한 번만 실행한다고 가정했습니다.
감사합니다.
현재 브라우저가 모듈을 지원하지 않으므로 어떤 포장 시스템을 사용하고 있습니까? –
Webpack + Babel + ES6 모듈 –
사용 방법을 보여줄 수 있습니까? 모든 가져 오기는 동일한 모듈 상태를 공유해야합니다 (바벨 노드에서 테스트 할 때도 마찬가지입니다). –