【问题标题】:meaning of module.exports= function in node.jsnode.js 中 module.exports= 函数的含义
【发布时间】:2015-10-08 03:34:51
【问题描述】:

我正在使用 node.js 迈出第一步,显然我尝试做的第一件事就是从模块中导出一些数据,所以我尝试了这个简单的案例:

dummy.js:

var user = "rally";

module.exports = {
  user:user
};

并且比这样的不同文件需要它:

var dummy = require('./dummy.js');
console.log(dummy.user); // rally

到目前为止一切顺利,一切正常,但现在我深入研究了模块开头有此定义的代码:

module.exports = function(passport,config, mongoose) {}

我不明白它的含义以及如何使用它。 只是为了理解我在这个抽象函数中定义了一些变量,但无法从任何其他文件中获取它们的值。 知道如何从这样定义的模块中导出变量..?所以例如我可以需要这个模块并获取“虚拟”变量并在不同的文件中使用它

module.exports = function(passport,config, mongoose) {
var dummy = "Dummy";
}

【问题讨论】:

标签: javascript node.js


【解决方案1】:

它的工作方式与第一个完全相同,只是它导出的是函数而不是对象。

导入模块的模块然后可以调用该函数:

var dummy = require('./dummy.js');
dummy();

知道如何从这样定义的模块中导出变量..?

因为函数只是对象,你也可以给它分配属性:

module.exports = function(passport,config, mongoose) {}
module.exports.user = 'rally';

但我认为,如果模块直接导出函数,则不太可能出现这种情况。您最好将函数导出为自己的导出:

exports.login = function(passport,config, mongoose) {}
exports.user = 'rally';

【讨论】:

    【解决方案2】:

    什么是模块?

    模块将相关代码封装成单个代码单元。创建模块时,这可以解释为将所有相关功能移动到文件中。

    // dummy.js
    var exports = module.exports = {};
    

    dummy.js 的封装代码可以在其他文件中使用时,它的实用性会增加。这是通过使用exports 来实现的。

    它们是如何被调用的?

    您可以在 module.exports 块之外声明您的函数。导出中的函数可以像变量或任何其他对象一样被调用。

    示例

    //dummy.js
    
    var myVariable = "foo";
    var myFunction = function(){
         //some logic
    };
    
    module.exports{
    
          myVariable : myVariable,
          myFunction : myFunction,
    
          myVariableTypeTwo : "bar",
          myFunctionTypeTwo : function () {
               //some logic
          }
    
    }
    

    我们现在可以将 dummy.js 的公开可用方法作为任何 js 文件的属性访问。

    var dummy = require('./dummy.js');
    
    dummy.myVariable; //foo
    dummy.myFunction();
    
    dummy.myVariableTypeTwo; //bar
    dummy.myFunctionTypeTwo();
    

    注意

    在上面的代码中,我们可以用 export 替换 module.exports 并获得相同的结果。如果这看起来令人困惑,请记住 export 和 module.exports 引用的是同一个对象。

    【讨论】:

    • module.exports{} 语法无效。
    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 2012-04-11
    • 2012-08-31
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多