正确的模块导出方式

17 浏览
0 Comments

正确的模块导出方式

这个问题已经有了答案:

Node.js模块导出的作用是什么,怎样使用?

假设我有下面这个模块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;

admin 更改状态以发布 2023年5月24日
0
0 Comments

module.exports = makeDir;

如果你只从javascript文件中导出一个对象,那么这是正确的方法。

如果你需要导出多个对象

var makeDir = {
 obj1 : function(){},
 obj2 : function(){}
}
module.exports = makeDir;

这样你就可以在其他文件中使用makeDir.obj1makeDir.obj2

0
0 Comments

使用module.exportsmodule.exports.FUNCTION_NAME的两种方法都可以,但是当您需要这些函数时,它们之间的区别就出现了。

让我用一个示例来展示区别。

a. 直接将函数分配给module.exports

// mkdir.js
module.exports = function(){
       console.log("make directory function");
};
// app.js
var mkdir = require("mkdir.js");
mkdir(); // prints make directory function

b. 将函数导出为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

希望这可以帮助你!

0