Node.js module.exports和exports的区别
Posted 三坷油
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js module.exports和exports的区别相关的知识,希望对你有一定的参考价值。
require 用来加载代码,而 exports 和 module.exports 则用来导出代码,从接触node.js就不会它们两陌生,上代码:
foo.js
exports.a = function(){ console.log(‘a‘) } exports.a = 1
test.js
var x = require(‘./foo‘); console.log(x.a) //1
foo.js
exports.a = function(){ console.log(‘a‘) } module.exports = {a: 2} exports.a = 1
test.js
var x = require(‘./foo‘); console.log(x.a)// 2
所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。
可以这样理解,每一个node.js执行文件,都自动的创建一个module对象,同时,module对象会创建一个exports的属性,初始化值为一个空对象,exports会引用这个module对象的exports属性,而当module.exports被改变的时候,exports不会改变。模块导出的时候,真正执行的是module.exports。
以上是关于Node.js module.exports和exports的区别的主要内容,如果未能解决你的问题,请参考以下文章
Node.js module.exports和exports的区别
node.js模块中exports和module.exports的区别
Node.js学习之(第二章:exports和module.exports)
Node.js 和 ES6 中的 module.exports 与 export default