模块的含义.Exports = node.js中的函数

meaning of module.exports= function in node.js

本文关键字:js 函数 node Exports 模块      更新时间:2023-09-26

我正在采取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) {}

我不明白它是什么意思,我该如何使用它。只是为了理解,我在这个抽象函数中定义了一些变量,但无法从任何其他文件中获得它们的值。任何想法我怎么能导出变量从模块定义像这样…?因此,例如,我可以需要这个模块,并获得"Dummy"变量,并在另一个文件

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

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

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

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';

什么是模块?

模块将相关的代码封装到一个单独的代码单元中。在创建模块时,这可以解释为将所有相关函数移动到文件中。

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

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

它们是如何被调用的?

你可以在模块外声明你的函数。出口。可以像调用变量或任何其他对象一样调用导出中的函数。

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

我们现在可以从任何js文件中以属性的形式访问dummy.js的公开方法。

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

注意

在上面的代码中,我们可以替换module。导出与导出实现了相同的结果。如果这看起来令人困惑,请记住导出和模块。导出引用相同的对象