exports和module.expors之间有什么区别及联系?

互联网 19-1-8
本篇文章给大家带来的内容是关于exports和module.expors之间有什么区别及联系?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

我们在模块化开发中,必须会用到exports/module.exports这两个玩意导出变量或者函数。因为模块化开发中的每个模块都有自己的模块作用域。比如:

//a.js var foo = '苏小猫'
//b.js console.log(foo)
//a.js var foo = '苏小猫';  module.exports = foo;
//b.js var foo = require('./b.js');  console.log(foo);

exportsmodule.expors的关系和区别?

在开发中,我们很纠结到底用exports还是module.exports,其实exports跟module.exports就是一个玩意,exports只是module.exports的一个引用。exports跟module.exports是等价的。我们可以在node里测试一下。

每个模块最终返回的还是return module.exports;

在我们平常的理解中导出单个变量或者单个函数就用module.exports;

module.exports = function(){     console.log("在你心里种点Bnum") }  //我们require之后就会得到一个[Function]

导出多个变量就用exports;

exports.name = "苏小猫" exports.tree = function(){     console.log("在你心里种点Bnum") } //我们require之后就会得到一个对象{name:"苏小猫",tree:[Function]}

exports和module.exports本身就是一个空对象,exports.xxx就等于在一个对象里面添加东西。

为什么module.exports导出的是单个?

因为它本来是一个空对象,module.exports=xxx。现在你重新给它赋值了,所以它只导出这个xxx。

如果给exports(exports={})重新赋值,这时它的意义就不同了;现在的exports,跟module.exports没有了半毛钱的关系了,exports.xxx = xxx;再往里面添加东西已经不会再影响最后返回回来的return module.exports了。

看,现在age已经不进入最后的return module.exports里面了。

如果还想继续用exports.xxx,那就得重新再给module.exports赋值给exports。

看,现在又生效了。

以上就是exports和module.expors之间有什么区别及联系?的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: Node.js
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:button按钮和submit按钮有什么区别?

相关资讯