es6模块支持,要吵疯了
发布于 7 年前 作者 i5ting 6009 次浏览 来自 分享
10 回复

我去围观围观

希望不要把 javascript 变的越来越臃肿

CITGM是什么

@NextZeus 正解啊,我也觉得单纯的export也很优美 自豪地采用 CNodeJS ionic

我最讨厌的就是这个。es6的一切都很美好,除了 import,export,from,default,as 简直不能更讨厌了。

@NextZeus

这个争论的内容跟模块没啥关系,实际上是关于 citgm 是否涉嫌滥用的问题。 citgm 全称为 The Canary in the Goldmine,项目地址在这里:https://github.com/nodejs/citgm Canary 指的应该就是 金丝雀版(alpha beta canary) 这个工具类似于一个回归测试或者冒烟测试工具,的作用是,它含了一部分目前流行的模块,可以指定某个版本的 node 对所有模块进行测试。 Node发布之前都会跑一边,以确保 node core 的升级不会对流行模块造成问题。

lodash 的开发者 jdalton 他参与了一个项目叫做 esm,这是一个模块加载工具。这个项目使用了 node 的私有 API。而 jdalton 打算让 lodash 依赖于 esm,而 lodash 是存在于 citgm 测试模块列表中的。

CTC 成员里有个人 vkurchatkin 发现了这个问题,他认为 jdalton 的做法是滥用 citgm,使用私有api是一种不安全的做法,并且会因为 citgm 的原因,让 node 长期强制支持这些私有 api,留下隐患。这个人就去 jdalton 的推特上面说这个事,jdalton 认为这个人无理取闹,就把他拉黑了。然后他就把问题发到 CTC 的 issues 上面了,就是狼叔给的地址。原文是:

While this is fine for a standalone obscure package that nobody uses, he intends to use in his other package, lodash, which is one of the most dependent upon packages on npm and also a part of CITGM testing. Furthermore, it seems that the only reason he wants to do this is to exploit CITGM and to force Node core to support these APIs indefinitely.

vkurchatkin 说 jdalton 是恶意的,不合作的,还拉黑他。而且使用私有 api 就是滥用。

jdalton 认为使用私有 api 的问题非常常见,在很多流行模块中都有这个做法。并且某些私有 api 长期存在于 node,是核心部分,不会被改动。虽然定义为私有,但是其实是伪私有 api。使用这类 api 可以更好的解决问题。

大家争论的一地鸡毛。

但是更多人认为,模块的作者比起自己去解决问题,不如把到底哪些 api 需要被标准公有化,这个问题提到社区去讨论更好。

我认为 jasnell 的回复还是和中肯的:https://github.com/nodejs/CTC/issues/164#issuecomment-323639516

还好最后大家和解了,这个问题也被放到列表中去讨论了。

狼叔的标题有误导性。@i5ting

想了解详情的可以去看看这个: https://github.com/nodejs/node/blob/master/COLLABORATOR_GUIDE.md#internal-vs-public-api https://github.com/standard-things/esm/issues/66

@TakWolf 嗯, https://github.com/standard-things/esm 是个非常好的东东,而且esm是否内置到sdk里,大家其实也是意见不一的,说是有误导性也不算过,看怎么看吧

回到顶部