Почему Underscore.js убрал поддержку AMD? - PullRequest
65 голосов
/ 26 января 2012

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

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

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

Ответы [ 4 ]

56 голосов
/ 26 января 2012

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

Да. Отсутствие поддержки конкретного загрузчика скриптов определенно облегчит для всех из них правильную работу.

Прошу прощения за слияние поддержки в первую очередь.

Он также написал в твиттере чуть больше об изменениях (ссылка с более поздний комментарий ):

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

29 голосов
/ 22 июля 2012

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

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

10 голосов
/ 18 декабря 2013

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

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

  1. Подчеркнуть коммит
  2. Магистральная фиксация

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

  1. Подчеркнуть номер
  2. Магистральная проблема
1 голос
/ 16 января 2013

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

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

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

...