在NodeJS模块中导出函数

时间:2014-12-03 16:24:48

标签: node.js express

我在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;

我怎么能解决这个问题呢? 非常感谢您提前

2 个答案:

答案 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。如果你把它变成一个函数,那么它就是一个函数。如果你像上面那样创建一个对象文字,你会得到一个对象。您还可以导出基元,例如日期,数组或您可能想到的任何其他内容。