素材牛VIP会员
很多人的Node.js代码里使用exports = module.exports = xxx这样的形式是何意?
 静***5  分类:Node.js  人气:875  回帖:3  发布于6年前 收藏

经常看到module文件里的最前面是这样的exports = module.exports = xxx

这里的xxx只是泛指而不是指xxx这个名字本身。

 标签:node.js

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv5 码农
星***屋 产品经理 6年前#1

在默认情况下,module.exports 是一个Object, exports 是 module.exports 的一个引用。 大多数人都是通过 exports.xx = yy 来输出

当模块要输出一个非Object时(比如一个Function),可以使用 module.exports = function () {} ,此时 module.exports 被覆盖了而 exports 还是原来的对像的引用,为了避免在后面的代码中仍然使用 exports.xx = yy 而导致不能正确输出,需要把 exports 变量也重新设置为新的 module.exports 的引用,所以一般习惯写成 exports = module.exports = xxx

Lv6 码匠
li***28 Linux系统工程师 6年前#2

http://nodejs.org/api/modules.html#modules_the_module_object

这里解释的比较详细,简单说 exports 是默认指向 module.exports 的一个变量。 而实际上真正导出的是 module.exports ,这才是真身。 因此当 module.exports 本身设置过导出后 exports 的导出将被忽略。所以为了避免这种情况,需要将 exports 及时和 module.exports 保持一致。

个人觉得 exports 貌似有些多余,可能是个人对此理解的还不够。设计者肯定有特殊的用意,望高人指教。

Lv5 码农
yi***ou CEO 6年前#3

其实,我也纠结了很久,最后发现无论什么情况,其实一个 module.exports=obj ;然后所有对象都挂在obj上,就可以搞定,感觉这样才是一个好习惯。 把exports覆盖了然后还重新定义然后再往上面增加值,我总觉得这么写有点多此一举的感觉。。。。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取