在 es6 模块之间共享数据

bac*_*ces 2 module global-variables sharedpreferences ecmascript-6

es6 模块(jspm/system.js & babel)之间有没有可以相互共享数据的地方(不是窗口):?

例如:我有一个用于 http 查询字符串的解析器模块。我在启动时使用它来选择要运行的程序(一个 html 文件运行多个程序)。我还在选定的程序中使用它来获取运行它的标志值。例如:三角形或正方形,它们的数量,世界坐标系......等。

如何在启动模块和需要标志数据的各种模块之间共享查询字符串解析的结果?模块是否有特殊的“导出”数据空间?

我可以重新解析,没什么大不了的,但在未来,我可能想要存储长时间计算的结果,以便它们可以共享。我也可以在“init”过程中将数据传递给模块,但这可能很尴尬。

fer*_*lis 5

如果您正在考虑将数据从一个模块传递到全局变量并让另一个模块从中读取数据,这里有一个简单的数据存储模块示例。

在 SimpleStore.js 中

var _store = {};

class SimpleStore {
   constructor(props) {
      if (props) { 
         _store = props;
      }
    }
    getContent() {
        return _store;
    }
}
export default SimpleStore
Run Code Online (Sandbox Code Playgroud)

在模块 A 中,我们将存储一些东西

import SimpleStore from './SimpleStore'

class A {
    constructor(props) {
        new SimpleStore({foo: 'bar'});
    }
}
Run Code Online (Sandbox Code Playgroud)

在模块 B 中,我们将获得该内容

import SimpleStore from './SimpleStore'

class B {
    constructor(props) {
        var content = new SimpleStore().getContent();
    }
}
Run Code Online (Sandbox Code Playgroud)

请记住,您可以_store在实例化 SimpleStore 时轻松更改内容,即。new SimpleStore('replace the original content')

这就是像IMMUTABLE.js这样的库可以派上用场的地方。同样作为示例,查看与React FluxRedux一起使用的商店模块