2

プロジェクトにインポートしたいモジュールがあります。

var ModuleA = require('./ModuleA.js'),
    ModuleB = require('./ModuleB.js'),
    ModuleC = require('./ModuleC.js'),
    ModuleD = require('./ModuleD.js');

さて、これはうまく機能しますが、これらをバンドルし、代わりに、次のように、これらすべての「サブ」モジュールのロードを処理する1つのモジュールを呼び出します。

// app.js ----------------------------

var Module = require('./Module.js');


// Module.js -------------------------

var ModuleA = require('./ModuleA.js'),
    ModuleB = require('./ModuleB.js'),
    ModuleC = require('./ModuleC.js'),
    ModuleD = require('./ModuleD.js');


// ModuleA.js ------------------------

exports.method = function() { return true }

ここで、次のように「サブ」バンドルのエクスポートにアクセスできるようにしたいと思います。

ModuleA.method();

これは可能ですか?

4

2 に答える 2

4

これを試して:

// ModuleA.js
module.exports.method = function () { return true; }

// Module.js
module.exports.A = require('./ModuleA');
module.exports.B = require('./ModuleB');

// app.js
var myModule = require('./Module');
myModule.A.method();

ModuleAのメソッドを直接呼び出したい場合は、次のようにファイルmyModuleに再エクスポートする必要があります。Modules.js

// ModuleA.js
module.exports.method = function () { return true; }

// Module.js
module.exports.methodA = require('./ModuleA').method;
module.exports.methodB = require('./ModuleB').method;

// app.js
var myModule = require('./Module');
myModule.methodA();

これで問題は解決しますか?

または、node-require-allを使用して、一度に複数のファイルをインポートし、単一のオブジェクトを使用してそれらをエクスポートすることもできます。例は次のとおりです。

var modules = require('require-all')({
  dirname    : __dirname + '/modules',
  filter     : /(Module.+)\.js$/,
  excludeDirs: /^\.(git|svn)$/
});

modulesその後、プロパティとして単一のモジュールを含むオブジェクトがあります。

modules.ModuleA.method();

(私はこのコードをテストしていませんが、基本的にはこのように動作するはずです。)

于 2013-03-26T13:29:05.260 に答える
0

Module.jsで、次のようにします。

var ModuleA = require('./ModuleA.js'),
for (var exported in ModuleA) {
  exports[exported] = ModuleA[exported];
}

ModuleAによってエクスポートされたすべてのオブジェクト(関数など)は、Moduleによってもエクスポートされるようになりました。

于 2013-03-26T15:24:11.337 に答える