你真的懂 exports 和 module.exports 么?
发布于 8 年前 作者 dlyt 3710 次浏览 来自 问答

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

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

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

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

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

@hyj1991 原来如此,学习了

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

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

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

回到顶部