你真的懂 exports 和 module.exports 么?
 发布于 8 年前  作者 dlyt  4330 次预览  最后一次回复是 8 年前  来自 问答 

为什么要这么写? 有什么目的么?

exports = module.exports = function init (app) {}
9 回复
zhanzhenzhen

这样写对么?居然能赋值给exports

dlyt

@zhanzhenzhen 不懂了吧,哈哈,我也不知道。所以来问问。

hyj1991

@dlyt 为了exports.xxx的东西也能导出 不这么写,只有module.exports = xxx 能导出来,后面所有的 exports.xxx=xxxx 都会失效,所以很多开源npm包这么干 其实本质上是js的 by-sharing 的引用形式导致的问题,这个就是一种解决办法

zhanzhenzhen

@hyj1991 原来如此,学习了

hyj1991

@DuanPengfei 这篇文章的理解也是有问题的,可以看这个 What is Name binding?

DuanPengfei

@hyj1991 恩恩,没有特别仔细看,不过大体应该是可以的,说到底无非就是搞清楚 require 加载的是什么和JS 语法的引用嘛,就因为名字有点像,初学者经常搞不清楚

NOOZN

exports是globe下的全局对象,最好不要改变它的指向, 可以用exports.xx = xxx