我在节点模块中有一个功能:
//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,具体取决于我的范围。
答案 0 :(得分: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();
答案 1 :(得分: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();