module.exports和exports

require 用来加载代码,而 exports 和 module.exports 则用来导出代码。但不少新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 exports 和 module.exports 的关系。node

一开始我没有理解,缘由是我没有明白nodejs 是怎么建立module.exports 和 exports,而且两者关系是怎么样的.ui

其实,系统自动给nodejs 文件增长2个变量 exports 和 module, module 又有一个属性 exports, 这个exports 属性指向一个空对象 {}; 同时 exports这个变量也指向了这个空对象{};spa

因而就有了 exports => {} <=module.exports.code

这2个exports 实际上是没有直接关系的,惟一的关系是: 他们初始都指向同一个空对象{}; 若是其中一个不指向作个空对象了, 那么他们的关系就没有了.对象

咱们常常看到这样的写法:blog

exports = module.exports = somethings

 

上面的代码等价于:class

module.exports = somethings
exports = module.exports

 

原理很简单,即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么经过 exports = module.exports 让 exports 从新指向 module.exports 便可require

相关文章
相关标签/搜索