1.3.0 - 2012年1月11日,从Underscore中删除了AMD(RequireJS)支持。如果您想要将Underscore与RequireJS一起使用,可以像普通脚本一样加载它,包装或修补您的副本,或下载一个分叉版本。他们为什么这样做呢?有人知道吗?因为他们只在几个月前(10月份)添加了它,而AMD(异步模块定义)据说要比CommonJS模块优越得多。更新:截至2013年12月,此功能已被重新支持。
Jeremy 在提交的 评论中说明了他的理由:
没错。不支持任何特定的脚本加载器将使所有的脚本加载器都能正常工作。
我很抱歉在一开始时合并了这个支持。
他还在 推特上发推文,进一步解释了这个改变(链接来源于 一个后来的评论):
…因为 AMD 支持会破坏在同一页上也使用 Require.js 的常规 Underscore 嵌入...
我觉得有必要对这个相当陈旧的问题进行补充。
现在 Backbone 和 Underscore 都支持 AMD:
相关讨论(尽管 Backbone 的讨论有点令人困惑,因为讨论的语气与实际结果之间存在明显的差异):
ES5-shim 提供了许多与 underscore 和 lodash 相同的功能(例如 array.forEach()、array.map() 等)。
ES5-shim 原生支持 AMD,不像 underscore 和 lodash 那样添加浏览器已经提供的东西的额外副本。相反,它将原生 ES5 功能添加到旧版浏览器中。
当 IE8 和其他旧版浏览器消失时,您可以简单地删除 ES5-shim 依赖项,而无需像使用 lodash 或 underscore 一样移植代码。