exports和module.exports主要作用是导出文件系统的。所以要和require(导进)放在一起用.下面就以它主要作用为要点进行理解.
主要要点:
1.exports 是 module.exports 的一个引用
理解:相当于===> var father ={children:'wxw'},children就是father的一个引用.
2.require 引用模块后,返回的是 module.exports 而不是 exports(重点)
例1:
这里导出是export.obj后======>require得到:{ obj: { name: '博客园' } }
例2:
这里导出是module.exports后======>require得到:{ name: '博客园' },这里很好的验证了第一点exports是module.exports一个引用.
3.exports.xxx = test 相当于在导出对象上挂属性,该属性对调用模块直接可见
以上面的例子为例:require(./exports)得到的是{obj:{name:'博客园'}}
4.exports = test 相当于给 exports 对象重新赋值,调用模块不能访问 exports 对象及其属性
以上面的例子为例:require(./exports)得到的是{},空对象
5.如果此模块是一个类,就应该直接赋值 module.exports,这样调用者就是一个类构造器,可以直接 new 实例。
以上几点是参考这个blog,上面主要是说了下自己的理解.
网友评论