假设我有以下模块makeDir
,它检查目录是否存在,如果目录不存在则创建一个,或者如果目录已经存在则只调用其回调为null。
导出此模块的正确方法是什么?
module.exports = makeDir
或module.exports.makeDir = makeDir
?
'use strict';
var fs = require('fs');
var mkdirp = require('mkdirp');
var makeDir = {};
makeDir.handler = function (dstPath, sizesObj, callback) {
var _path = dstPath + sizesObj.name + "/";
fs.lstat(_path, function (err, stats) {
if (err) {
mkdirp(_path, function (err, made) {
if (err) {
console.log("Error creating directory: %s", err);
callback (err, null);
} else {
console.log("Created new directory");
callback(null, made);
}
});
} else {
callback(null);
}
});
};
module.exports = makeDir;
答案 0 :(得分:2)
使用 module.exports 或 module.exports.FUNCTION_NAME 的两种方法都可以,但差异来自当你需要这些功能时。
让我用一个例子来说明差异。
一个。将功能直接分配给 module.exports
// mkdir.js
module.exports = function(){
console.log("make directory function");
};
// app.js
var mkdir = require("mkdir.js");
mkdir(); // prints make directory function
湾在 module.exports
中的属性导出函数// mkdir.js
module.exports.first = function(){
console.log('make directory function');
};
// app.js
var mkdir = require('mkdir.js');
mkdir.mkdir(); // make directory function
希望它有所帮助!
答案 1 :(得分:1)
module.exports = makeDir;
是正确的方法。
如果你需要出口超过一个对象
var makeDir = {
obj1 : function(){},
obj2 : function(){}
}
module.exports = makeDir;
这样您就可以在其他文件中使用makeDir.obj1
和makeDir.obj2
。