重构NodeJs函数

时间:2017-11-29 07:59:05

标签: javascript node.js

我有一个很大的app.js文件,想要拆分代码。我将所有路由都放入了一个名为routes.js

的模块中
module.exports = function(app){

app.get('/', function (req, res) {
  res.redirect('/page1');
});

app.get('/page1', function (req, res) {
  res.render('page1');
});

app.get('/page2/:id', function (req, res) {
    res.render('page2', {
      val: Number(req.params.id)
    });
});

}

在我的app.js中我打电话

const routes = require('./Server/routes')(app);

所以这很好。

我有一些像

这样的功能
function loadData(id, callback) {
  fs.readFile('./database.json', 'utf8', function (err, data) {
    var json = JSON.parse(data);
    var arr = json.arr;
    var obj = arr.find(e => e.id === Number(id));
    callback(obj);
  });
}

并希望将它们放在单独的文件中。我怎样才能做到这一点?我可以导出一个函数但是如何导出多个函数?

module.exports = function(){

function sayHello(){
   console.log("Hello");
}

function calc(){
   return 5 + 7;
}

}

需要模块并致电

myModule.sayHello();

var num = myModule.calc();

1 个答案:

答案 0 :(得分:3)

在新模块中,您可以导出对象并在对象

中定义函数
module.export = {
    sayHello: function() {
        console.log("Hello");
    },
    calc: function() {
        return 5 + 7;
    }
}

// usage: const mymodule = require('path/to/your/file');

您也可以导出一个函数并在原型中定义所需的函数

function mymodule(someArgsIfNeeded) {
    // do some initialization
}

mymodule.prototype.sayHello = function() {
    console.log("Hello");
}
mymodule.prototype.calc = function() {
    return 5 + 7;
}

module.export = mymodule

// usage: const mymodule = require('path/to/your/file')(someArgsIfNeeded);