【问题标题】:Correct way of exporting module [duplicate]导出模块的正确方法[重复]
【发布时间】:2015-08-17 10:24:29
【问题描述】:

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

【问题讨论】:

    标签: node.js module


    【解决方案1】:

    使用 module.exportsmodule.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
    

    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
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      module.exports = makeDir;

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

      如果您需要导出多个对象

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

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

      【讨论】:

        猜你喜欢
        • 2020-06-11
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 2020-02-16
        • 2017-12-30
        • 2014-05-13
        相关资源
        最近更新 更多