3
比方说,我有以下app.js(显然非常简体):从node.js的模块中调用app.js的函数?
var express = require('express'),
app = express.createServer();
// include routes
require('./lib/routes')(app);
// some random function
var foo = function() {
return 'bar';
};
// another random function
var foo2 = function() {
return 'bar2';
};
然后,我有路由模块:
module.exports = function(app){
app.get('/some/route', function(req, res){
var fooBar = foo(),
fooBar2 = foo2();
res.end(fooBar + fooBar2);
});
};
这显然因为富不工作, foo2没有在模块中定义。有没有办法使这项工作,或至少有不同的模式,以更好地完成这件事?
原始问题和这个被接受的答案都暗示'module.exports'是一个被调用的函数。不是。这是一个包含函数的对象。同样,问题和这个答案在定义的大括号之后有一个尾随的“)”。例如'module.exports = function(app){..})' - 一件事情永远不会执行。另一方面,它应该像'module.exports.myfunc = function(args){...}'或'module.exports = {myfunc1:function(){...},myfunc2:function(){。 ..}}';好吧,这是一个老问题,但为了新手,它需要澄清。 – unsynchronized 2014-06-13 06:20:47
右大括号是一个错误。 'module.exports'可以设置为一个函数。它非正式地称为亚纲模式。一探究竟。 – 2014-06-13 08:41:39
我意识到它可以设置为任何你喜欢的东西,包括一个随机数。这一切都取决于你是否想要遵循标准,或者只是剽窃,而不是关心是否有人想使用你的代码。毕竟你根本不用模块。整个观点是遵循一个惯例。如果你打算这样做,一个可接受的方式是导出一个名为substack的对象或函数,它可以做任何你想做的事情。 – unsynchronized 2014-06-13 10:08:30