ES6将一个不错的模块系统带入JavaScript中。这样定义的模块:
export default {
....
};
可以使用import myLib from "myModule"
轻松导入到源中。
但是,如果模块导出这样的"构造函数"功能:
export default ( actions ) => Reflux.createStore ( {
state: {
.....
},
config: {
.....
},
init: function() {
this.listenToMany ( actions );
},
}
您可以导入构造函数,然后使用
执行它import MyStoreConstructor from "./datastore";
var store = MyStoreConstructor(actions);
有什么优雅的方法可以做到吗?
您并不是真正导出构造函数,它更多是工厂(并且应该以良好的风格处于小写),而且我认为它不会比这更小。工厂将如何知道行动?此外,模块最多只能一次评估一次(至少在我知道的每个模块系统中),以避免不必要的副作用 - 随后的每个请求都将获得一种缓存的版本。您可以像Angularjs一样使用依赖项注入库,但这是一个单独的概念。