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

Node.js中exports,module.exports以及require方法

Node.js中exports与module.exports的区别