Почему Underscore.js удалил поддержку AMD?

1.3.0 - 11 января 2012 г. Удалена поддержка AMD (RequireJS) из Underscore. Если вы хотите использовать Underscore с RequireJS, вы можете загрузить его как обычный script, обернуть или исправить свою копию или загрузить раздвоенную версию.

Почему они это сделали? Кто-нибудь знает? Поскольку они добавили его всего несколько месяцев назад (в октябре), а AMD (определение асинхронного модуля), как говорят, намного превосходит модули CommonJS.

Обновление: по состоянию на декабрь 2013 года это было подтверждено снова.

Ответ 1

Джереми дал свои аргументы в комментариях комманды:

Угу. Не поддерживать конкретный загрузчик script, безусловно, облегчит работу всех пользователей.

Извиняюсь за объединение поддержки в первую очередь.

Он также в твиттере немного больше об изменении (ссылка из a позже комментарий):

... потому что поддержка AMD нарушает регулярные Underscore, внедряемые на страницы, которые также используют Require.js...

Ответ 2

Разработчики Underscore подумали, что поддержка AMD может сломать поддержку скриптов, не поддерживающих AMD. На самом деле это не так, поскольку у вас может быть script, который поддерживает AMD, но также работает как на развертывании без AMD.

Теперь есть замена для Underscore: Lo-Dash. Который наряду с другими функциями, не входящими в Underscore, включает двойную AMD/не AMD.

Ответ 3

Я почувствовал необходимость добавить к этому довольно старому вопросу.

Оба Backbone и Underscore теперь поддерживают AMD:

Обсуждения (хотя базовая одна немного озадачивает, так как существует четкое несоответствие между тоном обсуждения и фактическим результатом):

Ответ 4

ES5-shim предоставляет множество функций, таких как подчеркивание и lodash (array.forEach(), array.map() и т.д.).

ES5-shim изначально поддерживает AMD, в отличие от underscore и lodash, не добавляет дополнительных копий вещей, которые, возможно, уже предоставляет ваш браузер. Скорее он добавляет собственные функции ES5 в более старые браузеры.

Когда IE8 и другие старые браузеры вымирают, вы можете просто удалить зависимость ES5-shim без необходимости перекодировать код, например, с помощью lodash или подчеркивания.