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

一、rocker.js文件html

exports.name = function () {
    console.log('my name is luoqian')
}

二、在另外一个文件中
var rocker = require('./rocker.js')
rocker.name()
// 'my name is luoqian'node

三、Module.exports是真正的接口,exports是它的辅助工具,最终返回给调用的是Module.exports而不是exports。
四、全部的exports收集到的属性和方法,都赋值给了Module.exports。固然,这有个前提,就是Module.exports自己不具有任何属性和方法。若是,Module.exports已经具有一些属性和方法,那么exports收集来的信息将被忽略。
五、Module.exports 与 exports到底用哪一个比较好,为何要这样设计?工具

Module.exports = {}
exports = Module.exports

若是exports的属性被修改,因为指向的是同一快内存地址,因此Module.exports也会被修改。若是当exports被覆盖时,exports会指向一块新的内存,Module.exports仍是指向原来的内存,因此最后两个输出不同,咱们在require时返回的是module.exports而不是exports。
因此当咱们是添加到exports的属性,那么exports和module.exports均可以。而若是是直接赋值就要赋给Module.exports。ui

参考资料:一、http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html
二、http://cnodejs.org/topic/5231a630101e574521e45ef8设计

相关文章
相关标签/搜索