CNode

你真的懂 exports 和 module.exports 么?

问答
Ddlyt发布于9 年前最后回复9 年前9 回复4523 浏览0 收藏

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

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

回复 (9)

Z
zhanzhenzhen#1·9 年前

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

D
dlyt#2·9 年前
引用 zhanzhenzhen这样写对么?居然能赋值给exports?

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

H
hyj1991#3·9 年前

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

Z
zhanzhenzhen#4·9 年前

@hyj1991 原来如此,学习了

H
hyj1991#7·9 年前

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

D
DuanPengfei#8·9 年前

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

N
NOOZN#9·9 年前

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

参与回复
登录后即可参与回复。登录