J'ai trouvé que la solution suggérée par Dominic était la meilleure, mais il manque toujours une caractéristique de la déclaration "const". Lorsque vous déclarez une constante dans JS avec le mot clé "const", l'existence de la constante est vérifiée au moment de l'analyse, pas au moment de l'exécution. Donc, si vous avez mal orthographié le nom de la constante quelque part plus tard dans votre code, vous obtiendrez une erreur lorsque vous essayez de démarrer votre programme node.js. Ce qui est un bien meilleur contrôle orthographique.
Si vous définissez la constante avec la fonction define () comme Dominic l'a suggéré, vous n'obtiendrez pas d'erreur si vous avez mal orthographié la constante, et la valeur de la constante mal orthographiée sera indéfinie (ce qui peut conduire au débogage de maux de tête).
Mais je suppose que c'est le meilleur que nous puissions obtenir.
De plus, voici une sorte d'amélioration de la fonction de Dominic, dans constans.js:
global.define = function ( name, value, exportsObject )
{
if ( !exportsObject )
{
if ( exports.exportsObject )
exportsObject = exports.exportsObject;
else
exportsObject = exports;
}
Object.defineProperty( exportsObject, name, {
'value': value,
'enumerable': true,
'writable': false,
});
}
exports.exportObject = null;
De cette façon, vous pouvez utiliser la fonction define () dans d'autres modules, et cela vous permet de définir des constantes à la fois à l'intérieur du module constants.js et des constantes à l'intérieur de votre module à partir duquel vous avez appelé la fonction. La déclaration des constantes de module peut alors se faire de deux manières (dans script.js).
Première:
require( './constants.js' );
define( 'SOME_LOCAL_CONSTANT', "const value 1", this ); // constant in script.js
define( 'SOME_OTHER_LOCAL_CONSTANT', "const value 2", this ); // constant in script.js
define( 'CONSTANT_IN_CONSTANTS_MODULE', "const value x" ); // this is a constant in constants.js module
Seconde:
constants = require( './constants.js' );
// More convenient for setting a lot of constants inside the module
constants.exportsObject = this;
define( 'SOME_CONSTANT', "const value 1" ); // constant in script.js
define( 'SOME_OTHER_CONSTANT', "const value 2" ); // constant in script.js
De plus, si vous souhaitez que la fonction define () soit appelée uniquement à partir du module de constantes (pour ne pas gonfler l'objet global), vous la définissez comme ceci dans constants.js:
exports.define = function ( name, value, exportsObject )
et utilisez-le comme ceci dans script.js:
constants.define( 'SOME_CONSTANT', "const value 1" );
exports. Qu'est-ce qui est gênant?