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中測試時)。 –