Commonjs困惑一:使用module.exports还是exports?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
commonjs
这种模块化编程方案实际存在着一些困惑,苏南大叔在本文中说说第一个困惑,那就是:在commonjs
模块的代码里面,用什么语句导出呢?答案是module.exports
和exports
,为啥有两个答案,哪一个更好呢?这个就是本文要讨论的方案。
本文测试环境:node@14.16.0
。本文的结论是,使用module.exports
,而不要使用exports
。如果你想知道理由,就继续往下听苏南大叔的描述。
基本姿势
从上一篇文章可以看出,commonjs
模块化方案中,存在着如下两种写法:
exports.name = "sunan";
exports.getAge = function(){
return 18;
}
module.exports={
name:"sunan",
getAge:function(){
return 18;
}
}
在理解上, 就可以认为有一句隐藏的语句,将module.exports
和exports
画上等号。
exports = module.exports = {};
在最终的导出生效上,还是认定为module.exports
有效,exports
只是一个更加简单的写法,一个快捷方式罢了。
问题来了
既然,有了隐藏语句exports = module.exports = {};
。但是下面的写法,导出是失效的:
exports = {
name: "sunan",
getAge: function () {
return 18;
}
}
同样是exports
,可见:用exports
去“点.”操作,在对象上挂个新属性,是可以的。但是用“等号=”操作是不行的,因为这个是赋予新的值了。(自己脑补好了...)
所以,本篇文章的最终结论是:使用module.exports
可以一了百了,简单粗暴有效果。如果使用exports
的话,就存在着写错的可能性。至于两者混合使用的话,苏南大叔觉得,还是别给自己找麻烦了。用个module.exports
就最好了。
相关链接
总结
一句话总结,commonjs
使用module.exports
导出,尽量不要使用exports
导出!
更多commonjs
文章,请点击苏南大叔的博客:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。