2012-01-25 8 views
65

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é Underscore.js eliminó el soporte para AMD?

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

Actualización: A partir de diciembre de 2013, esto ha sido admitido de nuevo.

+2

espero que se puede vincular a un poste, la discusión electrónico o comentario de twitter con la motivación para este acto o aclaración por parte de los desarrolladores. – c69

+1

* Definición de módulo asíncrono * no * Cargador de módulo avanzado *, consulte https://github.com/amdjs/amdjs-api/wiki/AMD –

+1

hasta el momento, la voz más destacada de AMD se dice que es muy superior a commonjs/etc. es el creador de require.js mismo. Me siento menos inclinado a tomar ciegamente las opiniones del creador de un método particular que a escuchar a una comunidad de personas, y hasta ahora, el jurado todavía está afuera. –

Respuesta

56

Jeremy dio su razonamiento en el comments of the commit:

Sip. El hecho de que no se admita un gestor de script en particular definitivamente facilitará que todos ellos funcionen correctamente.

Pido disculpas por la fusión del soporte en primer lugar.

También tweeted un poco más en el cambio (enlace desde a later comment):

... porque el apoyo de AMD está rompiendo regulares subrayado incrusta en las páginas que también resultan de utilizar Require.js ...

+2

@SalmanPK Este cambio solo significa que el subrayado es agnóstico de cargador ahora. Entonces, puedes configurarlo para cualquier cargador que necesites. ¿Cómo es eso malo? –

+3

Porque ahora no podemos usarlo con ningún cargador compatible con AMD (RequireJS, Almond.js, curl.js, lsjs, bdLoad, Yabble, etc.) sin configuración adicional o edición manual. –

+5

@SalmanPK Use un tenedor dedicado a Underscore para AMD, luego: https://github.com/amdjs/underscore. –

30

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 que esté habilitada para AMD pero que también funcione tal como está en una implementación que no sea de AMD.

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

+17

Creo que esta respuesta está subestimada. Sin embargo, creo que el tono de esta respuesta (intencional o no) es condescendiente hacia los desarrolladores del guión bajo, que no creo que sea apropiado. –

+0

Lodash suena bien, pero no veo cómo responde esto a la pregunta –

+0

Estoy de acuerdo con los dos: en realidad no responde sobre el 'por qué'. En su lugar, ofrece una alternativa rápida. Así que estoy editando la respuesta un poco –

1

ES5-shim proporciona muchas de las mismas características que guiones bajos 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.

+2

. La pregunta no era sobre las características de la biblioteca de guiones bajos, sino sobre las razones para tal elección arquitectónica (polémica/opaca). – c69

+0

@ c69 Entendido, pero la respuesta lodash tampoco cubre las razones para eliminar AMD del guión bajo. Como esa respuesta es muy moderada, pensé en señalar que el uso de ES5 shim/ES5 para navegadores más antiguos presenta una alternativa más segura para el futuro. – mikemaccana

10

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

Tanto Backbone y subrayado Ahora Soporte AMD:

  1. Underscore commit
  2. Backbone Commit

Discusiones (aunque uno de Backbone es un poco desconcertante ya que hay una clara diferencia entre el tono de la discusión y el resultado real):

  1. Underscore Issue
  2. Backbone Issue
+0

o, ¡esa es una buena noticia! – c69

+0

@ c69 Actualicé el título, espero que no te importe. – ZenMaster

+0

Justo a tiempo, gracias! :) –

Cuestiones relacionadas