module.export和exports的区别
- 在 b.js 中(被引用)
//在 b.js 中(被引用)
//1.对一个函数的引用
function fun(){
console.log('hello')
}
module.exports = fun
// exports.fun = fun
// module.exports.fun = fun
- 在 a.js 中(引用)
var quote = require('./b.js');
quote()
// quote.fun()
// quote.fun()
- 总结:
对于要导出的属性,可以简单直接挂到exports
对象上
对于类,为了直接使导出的内容作为类的构造器可以让调用者使用new操作符
创建实例对象,应该把构造函数挂到module.exports
对象上,不要和导出属性值混在一起。 - 通俗得来说:
module.exports
才是真正的接口,exports
只不过是它的一个辅助工具。最终返回给调用的是module.exports
而不是exports
。
所有的exports
收集到的属性和方法,都赋值给了module.exports
。当然,这有个前提,就是module.exports
本身不具备任何属性和方法。如果,module.exports
已经具备一些属性和方法,那么exports
收集来的信息将被忽略。