0

複数のファイルを含むディレクトリである Node.js のモジュールが必要です。あるファイルのいくつかの vars を他のファイルからアクセスできるようにしたいのですが、モジュールの外部のファイルからはアクセスできません。出来ますか?

したがって、次のファイル構造を想定しましょう

` module/
  | index.js
  | extra.js
  ` additional.js

index.js

var foo = 'some value';
...
// make additional and extra available for the external code
module.exports.additional = require('./additional.js');
module.exports.extra = require('./extra.js');

extra.js

// some magic here
var bar = foo; // where foo is foo from index.js

additional.js

// some magic here
var qux = foo; // here foo is foo from index.js as well

Additional と Extra は、いくつかのビジネス ロジックを (互いに独立して) 実装していますが、エクスポートしてはならないモジュール内部のサービス データを共有する必要があります。

私が見る唯一の解決策は、もう 1 つのファイルを作成するservice.jsことrequireです。それが正しいか?他の解決策はありますか?additional.jsextra.js

4

3 に答える 3

0

さて、「グローバル」名前空間でこれを行うことができるかもしれません:

//index.js
global.foo = "some value";

その後

//extra.js
var bar = global.foo;
于 2013-06-27T04:03:20.020 に答える
0

あるファイルのいくつかの vars を他のファイルからアクセスできるようにしたいが、モジュールの外部のファイルからはアクセスできないようにしたい

はい、可能です。その他のファイルをモジュールにロードし、モジュール スコープから特定の変数へのアクセスを提供する特権関数に渡すか、値自体を渡すことができます。

index.js:

var foo = 'some value';
module.exports.additional = require('./additional.js')(foo);
module.exports.extra = require('./extra.js')(foo);

extra.js:

module.exports = function(foo){
  // some magic here
  var bar = foo; // foo is the foo from index.js
  // instead of assigning the magic to exports, return it
};

追加.js:

module.exports = function(foo){
  // some magic here
  var qux = foo; // foo is the foo from index.js again
  // instead of assigning the magic to exports, return it
};
于 2013-06-27T03:46:05.280 に答える