2015-06-20 192 views
2

是否有一個地方,es6模塊(jspm/system.js & babel)可以相互共享數據(不是窗口):?在es6模塊之間共享數據

例如:我有一個HTTP查詢字符串的解析器模塊。我在啓動時使用它來選擇運行哪個程序(運行許多程序的一個html文件)。我也在選定的程序中使用它來獲取運行它的標誌值。例如:三角形或正方形,它們的數量,世界座標系等等。

如何在啓動模塊和需要標誌數據的各個模塊之間共享查詢字符串解析的結果?是否有特殊的「出口」數據空間模塊?

我可以重新解析,沒有什麼大不了的,但將來我可能會想要存儲長計算的結果,以便它們可以共享。我也可以在「init」過程中將數據傳遞給模塊,但這可能很尷尬。

+1

使用的商店模塊只是'出口'它?您也可以導出數據,而不僅僅是函數。 – Bergi

回答

1

你應該製作第三個「config」模塊,比如說「C」,這樣「A」和「B」都依賴於它。該模塊將配置數據加載/緩存/公開給其他模塊。

2

如果您正在查看將數據從一個模塊傳遞到全局變量,並從另一個模塊讀取其他模塊,那麼這裏是一個簡單數據存儲模塊的示例。

在SimpleStore.js

var _store = {}; 

class SimpleStore { 
    constructor(props) { 
     if (props) { 
     _store = props; 
     } 
    } 
    getContent() { 
     return _store; 
    } 
} 
export defualt SimpleStore 

和模塊A,我們將保存的東西

import SimpleStore from './SimpleStore' 

class A { 
    constructor(props) { 
     new SimpleStore({foo: 'bar'}); 
    } 
} 

在模塊B,我們會得到內容

import SimpleStore from './SimpleStore' 

class B { 
    constructor(props) { 
     var content = new SimpleStore().getContent(); 
    } 
} 

記住實例化SimpleStore即可輕鬆更改_store的內容。 new SimpleStore('replace the original content')

這就是像IMMUTABLE.js這樣的圖書館可能有用的地方。也作爲例子檢查與React FluxRedux