ES6 - 带吸气剂的出口模块 [英] ES6 - Exporting module with a getter

查看:104
本文介绍了ES6 - 带吸气剂的出口模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



这是一个类似于:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆