簡體   English   中英

ES6模塊-全局變量

[英]ES6 Modules - Global Variables

我試圖基於localStorage創建一個快速的發布訂閱系統。 這個過程使我意識到我對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語句僅在首次導入時僅執行一次文件。

謝謝。

這是我的疏忽。

導入此模塊(大寫)時,我輸入了錯誤的文件名。

當忽略大小寫時,還有另一個同名模塊。 在具有其他區分大小寫的文件系統上編譯時,這可能導致意外行為。 如果需要多個模塊,請重命名模塊;如果需要一個模塊,請使用相同的大小寫。

這導致模塊重新初始化。

如果我寫錯了,請糾正我,但是我相信一個模塊在第一次導入時將只對整個應用程序執行一次。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM