为什么Underscore.js不支持AMD?

1.3.0 – 2012年1月11日删除了Underscore的AMD(RequireJS)支持。 如果你想在RequireJS中使用Underscore,你可以将它作为普通脚本加载,打包或修补你的副本,或者下载分叉版本。

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

更新:截至2013年12月,这再次得到支持。

杰里米 在提交的评论中给出了他的推理:

是的。 不支持特定的脚本加载器将使它们更容易正常工作。

我很抱歉合并首先支持。

他还推荐了一些更改(来自后面的评论 ):

…因为AMD的支持正在破坏正常的Underscoreembedded在也碰巧使用Require.js的网页上…

Underscore的开发人员认为,拥有AMD支持将打破对非AMD支持的脚本的支持。 实际情况并非如此,因为您可以拥有既支持AMD的脚本,又可以在非AMD部署上运行的脚本。

现在有了下划线替代下划线:下划线。 其中,不包括Underscore中的其他function还包括AMD /非AMD双重性。

我觉得有必要补充这个相当古老的问题。

Backbone和Underscore现在都支持AMD

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

讨论(虽然Backbone的讨论有点令人困惑,因为讨论的语气和实际结果之间存在明显的差异):

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

ES5-shim提供了许多与下划线和lodash(array.forEach(),array.map()等等)相同的function。

ES5-shim本身支持AMD ,不像下划线和lodash,不会增加浏览器可能已经提供的东西的额外副本。 相反,它增加了原有的ES5function,以旧的浏览器。

当IE8和其他旧浏览器消失时,您可以简单地删除ES5-shim依赖项,而不必像使用lodash或下划线那样移植代码。