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

时间:2012-01-25 20:07:00

标签: javascript underscore.js requirejs js-amd

  

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

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

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

4 个答案:

答案 0 :(得分:56)

Jeremycomments 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

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

    1. Underscore Issue
    2. Backbone Issue

答案 3 :(得分:1)

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

ES5-shim原生支持AMD ,与下划线和lodash不同,不会添加浏览器可能已经提供的额外副本。相反,它为旧版浏览器添加了原生ES5功能。

当IE8和其他旧版浏览器消亡时,您只需删除ES5-shim依赖项,而无需像使用lodash或下划线那样移植代码。