web-dev-qa-db-fra.com

Quelle est la bonne façon de définir la variable globale dans les modules ES6?

Je n'arrive pas à trouver une description de la façon dont je dois exporter la variable globale à partir du module ES6. Y a-t-il une ressource où elle est définie?

La seule solution qui semble fonctionner est de référencer un objet global, comme window:

window['v'] = 3;

Mais que faire si ces scripts s'exécutent dans Node.js? Alors je n'ai pas window; J'ai global. Mais ce code n'est pas bon:

var g = window || global;
g['v'] = 3;

Je comprends le concept de modules et n'utilisez pas de globaux dans mes applications. Cependant, avoir des variables globales lors du débogage dans la console peut être bénéfique, en particulier lors de l'utilisation de bundles comme Webpack au lieu de chargeurs comme SystemJs où vous pouvez facilement importer un module dans une console.

26

Il existe plusieurs façons d'avoir des valeurs globales disponibles dans votre application.

En utilisant les modules ES6 , vous pouvez créer une constante que vous exportez depuis votre module. Vous pouvez ensuite l'importer depuis n'importe quel autre module ou composant, comme ceci:

/* Constants.js */
export default {
    VALUE_1: 123,
    VALUE_2: "abc"
};

/* OtherModule.js */
import Constants from '../Constants';

console.log(Constants.VALUE_1);
console.log(Constants.VALUE_2);

Alternativement, certains outils de regroupement JS fournissent un moyen de transmettre des valeurs à vos composants au moment de la génération.

Par exemple, si vous utilisez Webpack , vous pouvez utiliser DefinePlugin pour configurer quelques constantes disponibles au moment de la compilation, comme alors:

/* Webpack configuration */
const webpack = require('webpack');

/* Webpack plugins definition */
new webpack.DefinePlugin({
    'VALUE_1': 123,
    'VALUE_2': 'abc'
});

/* SomeComponent.js */
if (VALUE_1 === 123) {
    // do something
}
10
Shishir