Dominic'in en iyisi olduğunu önerdiği çözümü buldum, ancak yine de "const" bildiriminin bir özelliğini kaçırıyor. JS'de "const" anahtar sözcüğüyle bir sabit bildirdiğinizde, sabitin varlığı çalışma zamanında değil ayrıştırma zamanında denetlenir. Dolayısıyla, sabitin adını daha sonra kodunuzda bir yere yazdıysanız, node.js programınızı başlatmaya çalıştığınızda bir hata alırsınız. Bu çok daha iyi bir yazım denetimi.
Sabiti Dominic'in önerdiği gibi define () işleviyle tanımlarsanız, sabiti yanlış yazdıysanız bir hata almazsınız ve yanlış yazılmış sabite değeri tanımlanmamış olur (bu da hata ayıklama baş ağrılarına yol açabilir).
Ama sanırım bu alabileceğimiz en iyisi.
Ayrıca, constans.js'de Dominic'in işlevinde bir tür iyileştirme var:
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;
Bu şekilde başka modüllerde define () işlevini kullanabilirsiniz ve hem constants.js modülünün içindeki sabitleri hem de işlevi çağırdığınız modülün içindeki sabitleri tanımlamanızı sağlar. Bildirilen modül sabitleri daha sonra iki şekilde yapılabilir (script.js içinde).
İlk:
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
İkinci:
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
Ayrıca, define () işlevinin yalnızca sabitler modülünden çağrılmasını istiyorsanız (genel nesneyi şişirmek için değil), constants.js'de şu şekilde tanımlarsınız:
exports.define = function ( name, value, exportsObject )
ve script.js'de şu şekilde kullanın:
constants.define( 'SOME_CONSTANT', "const value 1" );
exports
. Bu konuda garip olan ne?