Saya menemukan solusi yang disarankan Dominic untuk menjadi yang terbaik, tetapi masih melewatkan satu fitur dari deklarasi "const". Ketika Anda mendeklarasikan konstanta di JS dengan kata kunci "const", keberadaan konstanta diperiksa pada waktu parse, bukan pada saat runtime. Jadi jika Anda salah mengeja nama konstanta di suatu tempat nanti dalam kode Anda, Anda akan mendapatkan kesalahan ketika Anda mencoba memulai program node.js Anda. Yang merupakan pemeriksaan kesalahan pengejaan yang jauh lebih baik.
Jika Anda mendefinisikan konstanta dengan fungsi define () seperti yang disarankan Dominic, Anda tidak akan mendapatkan kesalahan jika Anda salah mengeja konstanta, dan nilai konstanta salah eja akan tidak terdefinisi (yang dapat menyebabkan sakit kepala debugging).
Tapi saya kira ini adalah yang terbaik yang bisa kita dapatkan.
Selain itu, ini adalah semacam peningkatan fungsi Dominic, di 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;
Dengan cara ini Anda dapat menggunakan fungsi define () di modul lain, dan memungkinkan Anda untuk mendefinisikan konstanta di dalam module constants.js dan konstanta di dalam modul tempat Anda memanggil fungsi tersebut. Mendeklarasikan konstanta modul kemudian dapat dilakukan dengan dua cara (dalam script.js).
Pertama:
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
Kedua:
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
Juga, jika Anda ingin fungsi define () dipanggil hanya dari modul konstanta (bukan untuk mengasapi objek global), Anda mendefinisikannya seperti ini di constants.js:
exports.define = function ( name, value, exportsObject )
dan gunakan seperti ini di script.js:
constants.define( 'SOME_CONSTANT', "const value 1" );
exports. Apa yang canggung tentang itu?