2015-06-03 95 views
2

假設我有以下模塊makeDir,它檢查目錄是否存在,如果該目錄不存在,則創建一個目錄,或者如果該目錄已經存在,則僅使用null調用它的回調。導出模塊的正確方式

哪種方法可以導出此模塊?

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

回答

1

module.exports = makeDir;

是正確的方法,如果你正在導出從JavaScript文件只有一個對象。

情況下,你需要出口超過一物

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

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

2

使用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 

灣在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 

在財產導出功能,希望它可以幫助!