我在NodeJS中有一个模块,它有以下定义:
var express = require('express');
var router = express.Router();
function myFunction(){
//do some stuff
};
router.get('/url', function(req, res, callback) {
var data = myFunction();
res.render('index', {
item: data
});
});
module.exports = router;
我希望以两种方式调用它:
HTTP请愿:
http://localhost:3090/url
作为另一个模块的功能:
var myModule = require('myModule');
var data = myModule.myFunction();
我可以通过HTTP以上面显示的方式访问模块。但是,我不知道如何导出myFunction
以在另一个模块中使用。我试过以下但没有成功:
router.myFunction = myFunction;
module.exports = router;
和
module.exports = router;
module.exports.myFunction = myFunction;
我怎么能解决这个问题呢? 非常感谢您提前
答案 0 :(得分:2)
您可以进行这些更改
使用exports来公开多个函数
exports.router = router;
exports.myFunction = myFunction;
将它们包含在其他文件中(myModule的路径可能因您的结构而异)您现在可以将它们包含在
中var routes= require('./myModule').router;
var myfunction = require('./myModule').myFunction;
答案 1 :(得分:1)
另一种方法是总结您在模块末尾导出的所有内容 - 基本上构建导出对象:
module.exports = {
myFunction: myFunction,
router: router,
someConstant: 42,
anotherValue: calculateThisValue()
}
任何时候,module.exports
都是您需要该文件时获得的全局每文件对象。如果你什么都没有,那就是undefined
。如果你把它变成一个函数,那么它就是一个函数。如果你像上面那样创建一个对象文字,你会得到一个对象。您还可以导出基元,例如日期,数组或您可能想到的任何其他内容。