2016-01-29 27 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(); 
相關問題