CommonJs模块规范中module.exports和exports的使用注意点

之前简单总结过ES6中的export/import模块规范(ES6中的export/import module 基本用法),这里在简单总结下CommonJs模块规范中的导出模块module.exports和exports使用注意点(导入模块require就不扯啦):

1、exports其实是指向module.exports的引用;
2、require() 返回的是 module.exports 而不是 exports;
3、module.exports 的初始值为一个空对象{},所以 exports也为空对象{};
4、module.exports对象不为空的时候exports对象就自动忽略;

其实从上面我们可以推断出我们不能直接给exports赋值(注:exports=module.exports=samething这样的赋值除外;但可以给其添加属性,前提是module.exports对象为空),因为如果赋值后,exports和module.exports的指向关系就会断裂,导致易出错。

推荐资料
1、Node.js中exports与module.exports的区别
2、Node.js模块导出exports 和 module.exports 的区别
3、 module.exports,exports,export和export default,import与require区别与联系

本文版权归本人即笔名:该账户已被查封http://www.jianshu.com/u/e0c3321672f5所有,如需转载请注明出处。谢谢!

你可能感兴趣的:(CommonJs模块规范中module.exports和exports的使用注意点)