optimizer node javascript underscore.js requirejs js-amd

javascript - node - requirejs github



¿Por qué Underscore.js eliminó el soporte para AMD? (4)

Los desarrolladores de Underscore pensaron que tener soporte de AMD rompería el soporte en scripts que no están habilitados para AMD. En realidad, este no es el caso, ya que puede tener una secuencia de comandos habilitada para AMD pero que también funciona como está en una implementación que no es de AMD.

Ahora hay un reemplazo directo para Underscore: Lo-Dash . Que, junto con otras características que no están en Underscore, incluye la dualidad AMD / no AMD.

1.3.0 - 11 de enero de 2012 Se eliminó el soporte de AMD (RequireJS) de Underscore. Si desea utilizar Underscore con RequireJS, puede cargarlo como un script normal, ajustar o aplicar parches a su copia, o descargar una versión bifurcada.

¿Por qué lo han hecho? ¿Alguien sabe? Porque lo agregaron hace solo unos meses (en octubre) y se dice que AMD (definición de módulo asíncrono) es muy superior a los módulos de CommonJS.

Actualización: desde diciembre de 2013, esto ha sido respaldado nuevamente.


Sentí la necesidad de agregar a esta pregunta bastante antigua.

Tanto Backbone como Undercore ahora son compatibles con AMD :

  1. Underscore commit
  2. Backbone Commit

Debates (aunque el de Backbone es un poco desconcertante ya que existe una clara discrepancia entre el tono de la discusión y el resultado real):

  1. Subrayar problema
  2. Backbone Issue

Jeremy dio su razonamiento en los comentarios del compromiso :

Sí. No dar soporte a un gestor de script en particular definitivamente hará que sea más fácil para todos ellos funcionar correctamente.

En primer lugar, me disculpo por fusionar el soporte.

También tweeted un poco más sobre el cambio (enlace de un comentario posterior ):

... porque el soporte de AMD está rompiendo las incrustaciones regulares de Underscore en las páginas que también usan Require.js ...


ES5-shim proporciona muchas de las mismas funciones que underscore y lodash (array.forEach (), array.map () etc).

ES5-shim soporta nativamente AMD , a diferencia de subrayado y lodash, no agrega copias adicionales de cosas que su navegador probablemente ya proporciona. Más bien agrega características ES5 nativas a navegadores más antiguos.

Cuando IE8 y otros navegadores antiguos desaparecen, simplemente puede eliminar la dependencia de ES5-shim sin tener que codificar el puerto como lo haría con lodash o guión bajo.