1.3.0 - 2012年1月11日从Underscore中删除了AMD(RequireJS)支持。如果您想将Underscore与RequireJS一起使用,您可以将其作为普通脚本加载,包装或修补您的副本,或下载分叉版本。
他们为什么要这样做?有人知道吗?因为他们仅在几个月前(10月)添加了它,并且AMD(异步模块定义)表示远远优于CommonJS模块。
更新:截至2013年12月,再次受到支持。
答案 0 :(得分:56)
Jeremy在comments of the commit中提出了他的推理:
是的。不支持特定的脚本加载器肯定会使所有它们更容易正常工作。
我为首先合并支持而道歉。
他还tweeted了解更改(来自a later comment的链接):
...因为AMD的支持正在破坏常规的Underscore嵌入也恰好使用Require.js的页面......
答案 1 :(得分:29)
Underscore的开发人员认为,支持AMD会破坏对非AMD启用脚本的支持。事实并非如此,因为你可以拥有一个既支持AMD的脚本,又可以在非AMD部署中按原样运行。
现在有一个Underscore的替代品:Lo-Dash。其中,以及Underscore中没有的其他功能,包括AMD /非AMD二元性。
答案 2 :(得分:10)
我觉得有必要加上这个相当古老的问题。
Backbone和Underscore现在都支持AMD :
讨论(虽然Backbone的一个有点令人费解,因为讨论的基调和实际结果之间存在明显的差异):
答案 3 :(得分:1)
ES5-shim提供了许多与下划线和lodash(array.forEach(),array.map()等)相同的功能。
ES5-shim原生支持AMD ,与下划线和lodash不同,不会添加浏览器可能已经提供的额外副本。相反,它为旧版浏览器添加了原生ES5功能。
当IE8和其他旧版浏览器消亡时,您只需删除ES5-shim依赖项,而无需像使用lodash或下划线那样移植代码。