正确的导出模块的方式

时间:2015-06-03 09:34:51

标签: node.js module

假设我有以下模块makeDir,它检查目录是否存在,如果目录不存在则创建一个,或者如果目录已经存在则只调用其回调为null。

导出此模块的正确方法是什么?

module.exports = makeDirmodule.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;

2 个答案:

答案 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;

如果您只从javascript文件导出一个对象,则

是正确的方法。

如果你需要出口超过一个对象

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

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