Dominicが最適なソリューションを提案しましたが、「const」宣言の1つの機能がまだありません。JSで「const」キーワードを使用して定数を宣言すると、定数の存在は実行時ではなく解析時にチェックされます。したがって、コードの後半で定数の名前のスペルを間違えた場合、node.jsプログラムを起動しようとするとエラーが発生します。これははるかに優れたスペルミスチェックです。
Dominicが提案するように、define()関数を使用して定数を定義する場合、定数のスペルを間違えてもエラーは発生せず、スペルの間違った定数の値は未定義になります(デバッグの問題が発生する可能性があります)。
しかし、これは私たちが得ることができる最高のことだと思います。
さらに、constans.jsでのDominicの機能の一種の改善を以下に示します。
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;
このようにして、他のモジュールでdefine()関数を使用でき、constants.jsモジュール内と、関数を呼び出したモジュール内の定数の両方で定数を定義できます。モジュール定数の宣言は、(script.jsで)2つの方法で実行できます。
最初:
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
第二:
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
また、define()関数が定数モジュールからのみ呼び出されるようにする場合(グローバルオブジェクトを膨張させないため)、constants.jsで次のように定義します。
exports.define = function ( name, value, exportsObject )
そして、script.jsで次のように使用します。
constants.define( 'SOME_CONSTANT', "const value 1" );
exports。それについて何が厄介ですか?