2016-01-29 31 views
0

我有一个功能可按节点模块内:我可以向模块添加方法吗?

//app.js 
var minify = require("./minify.js")(app, express); 

//minify.js 
module.exports = function (app, express) { 

    ... 

    function fileList(dir) { 
     return fs.readdirSync(dir).reduce(function(list, file) { 
      var name = path.join(dir, file); 
      var isDir = fs.statSync(name).isDirectory(); 
      var isJs = name.endsWith('.js'); 
      return list.concat(isDir ? fileList(name) : isJs ? [name] : []); 
     }, []); 
    } 
    ... 
}; 

我想将其更改为一个方法,使我的代码更易读。

我尝试以下,没有成功:

module.fileList = function(dir) { 
    return fs.readdirSync(dir).reduce(function(list, file) { 
     var name = path.join(dir, file); 
     var isDir = fs.statSync(name).isDirectory(); 
     var isJs = name.endsWith('.js'); 
     return list.concat(isDir ? fileList(name) : isJs ? [name] : []); 
    }, []); 

module.prototype.fileList = function(dir) { 
    return fs.readdirSync(dir).reduce(function(list, file) { 
     var name = path.join(dir, file); 
     var isDir = fs.statSync(name).isDirectory(); 
     var isJs = name.endsWith('.js'); 
     return list.concat(isDir ? fileList(name) : isJs ? [name] : []); 
    }, []); 
} 

我希望能够调用方法USINT this.fileList或minify.filelist,这取决于我的范围。

回答

1

您可以从导出的函数返回的对象:

//minify.js 
function fileList(dir) { 
    // ... 
} 

module.exports = function(app, express) { 
    //... 
    return { 
     fileList: fileList 
    }; 
} 

//app.js 
var minify = require("./minify.js")(app, express); 
minify.fileList(); 
0

我觉得这种方式更容易:

minify.js

module.exports = { 

    fileList: function(app, express) { 
     // your code here 
    }, 

    Method2: function() { 
     // another code here 
    } 

} 

而且你可以使用它像这样:

app .js

var minify = require('minify'); 

minify.fileList(app, express); 
minify.Method2(); 
相关问题