ES6 – Module d'exportation avec un getter

Souhaite exporter un module qui obtient la définition du module à partir d'un objet global.

C'est quelque chose comme:

export { get DynamicModule() { return __globalFluxStorage.state.property.property.property.property } } ... import {DynamicModule} from 'dynamic-module' 

Nous disposons d'un stockage de flux complexe et DynamicModule est juste un moyen d'accéder à __globalFluxStorage.state.property.property.property.property sans avoir besoin de taper l'accesseur de propriété longue. Est-ce possible? Merci.

Modifier:

Comme j'utilise babel, j'ai essayé quelque chose comme ça:

 Object.defineProperty(module.exports, "Forms", { get: function() { return __globalFluxStorage.state.property.property.property.property } }); 

Mais ne fonctionne pas, c'est-à-dire que {DynamicModule} est undefined

Non, il est impossible de faire un getter pour un module export – ce sont des liaisons variables, pas des propriétés.

Cependant, vous pourriez simplement faire une exportation par défaut:

 export default __globalFluxStorage.state.property.property.property.property; 

 import DynamicModule from 'dynamic-module'; 

Si vous souhaitez importer un nom, vous devrez déclarer le nom dans votre exportation:

 export var DynamicModule = __globalFluxStorage.state.property.property.property.property; 

 import {DynamicModule} from 'dynamic-module'; 

Cela permettrait également de modifier la valeur plus tard lorsque ce n'est pas disponible au moment du chargement du module:

 export var DynamicModule; … DynamicModule = __globalFluxStorage.state.property.property.property.property; 

(Bien que dans ce cas, vous pourriez envisager d'exporter un Promise ou EventEmitter à la place)