node.js 中 module.exports= 函数的含义
Posted
技术标签:
【中文标题】node.js 中 module.exports= 函数的含义【英文标题】:meaning of module.exports= function in node.js 【发布时间】: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";
【问题讨论】:
我自己经常想知道这一点。module.exports
到底是什么?在 Gruntfile.js 中已经看到了很多
***.com/questions/5311334/…、***.com/questions/6116960/… 或 ***.com/questions/7137397/… 的可能重复项
还有sitepoint.com/understanding-module-exports-exports-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
…
语法无效。以上是关于node.js 中 module.exports= 函数的含义的主要内容,如果未能解决你的问题,请参考以下文章
在 Node.js 中声明多个 module.exports
node.js 中 module.exports= 函数的含义
Node.js中exports与module.exports的区别
node.js模块中exports和module.exports的区别