2014-03-02 74 views
1

Folks, 試圖包含其他.js文件,以便能夠通過以下方式從模塊中導出。這將使主模塊更具可讀性。我試圖包含來自其他函數的代碼。NodeJS module.exports submodule

我想它不是正確的方法。有人能指引我朝着正確的方向嗎?

主要模塊文件:

module.exports = { 
    eval(fs.readFileSync('./extras/foo.js')+''); 

    fdsa: function (barf, callback) { 
    }, 
    asdf: function (barf, callback) { 
    }, 
} 

foo.js:

foo: function (barf, callback) { 
    ... 
    callback(err, result); 
} 
+1

只要讓foo.js成爲一個導出函數的模塊。然後在主文件var foo = require('./ extras/foo'); – bryanmac

+1

http://nodejs.org/api/modules.html – bryanmac

+0

所以如果其他函數調用main.js,他們將如何使用主叫做foo的子模塊? – Cmag

回答

4

如果你想main.js基本上覆制和提升家居FOO有(這是愚蠢的,但似乎你可以這樣做:

main.js

var foo = require('./extras/foo'); 
for (var prop in foo) { 
    exports[prop] = foo[prop]; 
} 
exports.fdsa = function(... 
exports.asdf = function(... 

./extras/foo.js,如果你把在somedir/index.js文件

exports.foo = function(... 

側面說明,它可以根據需要爲剛剛somedir,這也可能是有用的。

如果你只是想通過的主要途徑進入foo,並確定與子命名空間,只是做:

main.js

exports.foo = require('./extras/foo'); 

然後調用代碼可以這樣做:

require('./main').foo.foo(blah, callback); 

另外請注意,如果你想整個foo模塊是一個函數,只是做:

module.exports = function foo(barf, callback) {...