为什么Underscore.js会删除对AMD的支持?

c69*_*c69 65 javascript requirejs underscore.js js-amd

1.3.0 - 2012年1月11日从Underscore中移除了AMD(RequireJS)支持.如果您想将Underscore与RequireJS一起使用,您可以将其作为普通脚本加载,包装或修补您的副本,或下载分叉版本.

他们为什么要这样做?有人知道吗?因为他们仅在几个月前(10月)添加了它,并且据说 AMD(异步模块定义)远远优于CommonJS模块.

更新:截至2013年12月,再次受到支持.

Jon*_*ski 56

杰里米在承诺评论中提出了他的推理:

是的.不支持特定的脚本装载机肯定将使它更容易为所有他们的正常工作.

我为首先合并支持而道歉.

他还在推特上发了一些关于这一变化的推文(来自后来评论的链接):

...因为AMD的支持正在破坏常规的Underscore嵌入也恰好使用Require.js的页面...

  • **注意:正如问题中现在提到的,截至2013年12月,Underscore再次符合AMD标准.** (7认同)
  • @SalmanPK使用专用于Underscore for AMD的分支,然后:https://github.com/amdjs/underscore. (5认同)
  • 因为现在我们不能将它与任何AMD兼容的加载器(RequireJS,Almond.js,curl.js,lsjs,bdLoad,Yabble等)一起使用,无需额外配置或手动编辑. (3认同)
  • @SalmanPK这个改变只是意味着下划线现在与加载器无关.因此,您可以自由地为您需要的任何装载机进行设置.这有什么坏事? (2认同)

Ang*_*las 29

Underscore的开发人员认为,支持AMD将破坏对非AMD启用的脚本的支持.事实并非如此,因为您可以拥有一个既支持AMD的脚本,也可以在非AMD部署中按原样运行.

现在有一个直接替代Underscore:Lo-Dash.其中,与Underscore中没有的其他功能一起,包括AMD /非AMD二元性.

  • 我认为这个答案被低估了.但是,我觉得这个答案(有意或无意)的语气是屈指可数的下划线开发人员,我认为这是不恰当的. (17认同)

Zen*_*ter 10

我觉得有必要加上这个相当古老的问题.

Backbone和Underscore现在都支持AMD:

  1. 下划线提交
  2. 骨干提交

讨论(虽然Backbone的一个有点令人费解,因为讨论的基调和实际结果之间存在明显的差异):

  1. 下划线问题
  2. 骨干问题