Почему 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 или подчеркивания.