在node.js中导出函数的结果

时间:2014-08-18 22:08:24

标签: javascript node.js

我写过这个函数。它的作用是通过nodejs模块recursive-readdir将所有文件递归读取到文件夹中。它运作良好。 问题是我不知道如何使用routes导出module.exports数组之外的数据。我试图把它放在回调函数之外,但是变量是未定义的。任何的想法?

var path = require('path');
var recursive = require('recursive-readdir');

recursive(__dirname, function(err, files){

  var routes = {};

  for (var i = 0, dim = files.length; i < dim; i++) {
    var file = path.basename(files[i], '.js');
    if(file !== 'bootstrap'){
      routes[file] = require(files[i]);
    }
  }
});

1 个答案:

答案 0 :(得分:2)

var path = require('path');
var recursive = require('recursive-readdir');

module.exports = function getRoutes(callback) {
     recursive(__dirname, function(err, files){

         var routes = {};

         for (var i = 0, dim = files.length; i < dim; i++) {
             var file = path.basename(files[i], '.js');
             if(file !== 'bootstrap'){
                 routes[file] = require(files[i]);
             }
         }

         if (callback) { callback(routes); }
});

你现在可以像这样使用它

require('get_routes')(function(routes) { ... }); 

如果你想要更有表现力的方式,你可能想做

module.exports.find = function (callback) { ... }

然后在外面使用

var routes = require('routes')
routes.find(function (routes) {...});