ES6 - 带吸气剂的出口模块 [英] ES6 - Exporting module with a getter
问题描述
这是一个类似于:
export {
get DynamicModule(){
return __globalFluxStorage.state.property.property.property.property
}
}
...
从动态模块导入{DynamicModule}
我们有一个复杂的通量存储,而DynamicModule只是访问__globalFluxStorage.state.property.property.property.property的一种方式,而不需要键入long属性访问器。这可能吗?谢谢。
编辑:
由于我使用的是babel,尝试了这样一个:
Object.defineProperty(module.exports,Forms,{
get:function(){
return __globalFluxStorage.state .property.property.property.property
}
});
但不起作用,即{DynamicModule}是 undefined
不,不可能为模块导出创建一个getter - 它们是可变绑定,而不是属性。
但是,您可以简单地将其设为默认导出:
export默认__globalFluxStorage.state.property.property.property.property;
从'dynamic-module'导入DynamicModule;
如果你想要一个命名导入,你必须在导出中声明名称: p>
export var DynamicModule = __globalFluxStorage.state.property.property.property.property;
import {DynamicModule} from'dynamic-module';
这也允许稍后在加载模块时不可用的值更改:
export var DynamicModule;
...
DynamicModule = __globalFluxStorage.state.property.property.property.property;
(尽管在这种情况下,您可能需要考虑导出Promise或EventEmitter)
would like to export a module that get's the module's definition from some global object.
It's something like:
export {
get DynamicModule() {
return __globalFluxStorage.state.property.property.property.property
}
}
...
import {DynamicModule} from 'dynamic-module'
We have a complex flux storage and DynamicModule is just a means of accessing __globalFluxStorage.state.property.property.property.property without the need to type in the long property accessor. Is this possible? Thanks.
Edit:
Since I am using babel, tried something like this:
Object.defineProperty(module.exports, "Forms", {
get: function() {
return __globalFluxStorage.state.property.property.property.property
}
});
But does not work, i.e. {DynamicModule} is undefined
No, it is impossible to make a getter for a module export - they are variable bindings, not properties.
However you could simply make that a default export:
export default __globalFluxStorage.state.property.property.property.property;
import DynamicModule from 'dynamic-module';
If you want a named import, you'll have to declare the name in your export:
export var DynamicModule = __globalFluxStorage.state.property.property.property.property;
import {DynamicModule} from 'dynamic-module';
This would also allow changing the value later when it's not available right at the time of the module being loaded:
export var DynamicModule;
…
DynamicModule = __globalFluxStorage.state.property.property.property.property;
(although in that case you might want to consider exporting a Promise or EventEmitter instead)
这篇关于ES6 - 带吸气剂的出口模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!