exports和module.exports区别原理解析
- 1.在node.js中,模块导出可以用exports和module.exports
- 2在原理上,可以这样理解
var module = {
exports = {
}}
var exports = module.exports
return module.exports
所以在模块导出中,module.exports === exports //true
在代码的最后,会有这样的返回值:return module.exports;
- 3.我们可以这样用
exports.func = function(){}
module.exports.func = function(){}
上述两种方法具有相同的含义
- 4.那么这两种方法在用法上有什么区别呢,看看下面的代码。
主要在于引用类型
module.exports = 'hellow'
exports = 'world'
这样做就会给module.exports赋值一个新的值,断开对exports的指向,此时,exports已经失去了作用。
exports = 'hellow exports'
exports.abc = 'abc'
这样写的代码也将exports的指向与module.exports断开,由于最后导出是return module.exports,所以挂载在exports的所有内容都会失效,不会被导出。
- 5.使用环境
导出多个成员:exports.xxx = xxx
也可以:module.exports = {}
导出单个成员:module.exports = xxx - 6.如果你是在分不清两者的关系,可以选择忘记exports而只使用module.exports也没问题。
module.exports.xxx = xxx
module.exports = {}