web-dev-qa-db-fra.com

Pourquoi Underscore.js a-t-il supprimé la prise en charge d'AMD?

1.3.0 - 11 janvier 2012 Suppression de la prise en charge AMD (RequireJS) d'Underscore. Si vous souhaitez utiliser Underscore avec RequireJS, vous pouvez le charger en tant que script normal, envelopper ou patcher votre copie, ou télécharger une version forkée.

Pourquoi l'ont-ils fait? Est-ce que quelqu'un sait? Parce qu'ils l'ont ajouté il y a seulement quelques mois (en octobre), et AMD (Asynchronous Module Definition) est dit bien supérieur aux modules CommonJS.

Mise à jour: depuis décembre 2013, cela a été pris en charge à nouveau.

65
c69

Jeremy a donné son raisonnement dans le commentaires du commit :

Oui. Le fait de ne pas prendre en charge un chargeur de script particulier facilitera certainement le fonctionnement correct de tous .

Je m'excuse d'avoir fusionné le support en premier lieu.

Il a également tweeté un peu plus sur le changement (lien de n commentaire plus tard ):

… Parce que le support AMD rompt les intégrations Underscore régulières sur les pages qui utilisent également Require.js…

56
Jonathan Lonowski

Les développeurs d'Underscore pensaient que la prise en charge d'AMD interromprait la prise en charge des scripts non compatibles AMD. Ce n'est en fait pas le cas, car vous pouvez avoir un script qui est à la fois compatible AMD mais fonctionne également tel quel sur un déploiement non AMD.

Il y a maintenant un remplacement pour Underscore: Lo-Dash . Ce qui, avec d'autres fonctionnalités non présentes dans Underscore, inclut la dualité AMD/non AMD.

29
Angelos Pikoulas

J'ai ressenti le besoin d'ajouter à cette question assez ancienne.

Backbone et Underscore prennent désormais en charge AMD :

  1. nderscore commit
  2. Validation du backbone

Discussions (bien que celle de Backbone est un peu déroutante car il y a une nette différence entre le ton de la discussion et le résultat réel):

  1. problème de soulignement
  2. Problème de dorsale
10
ZenMaster

ES5-shim fournit plusieurs des mêmes fonctionnalités que le trait de soulignement et le lodash (array.forEach (), array.map () etc.).

ES5-shim prend en charge nativement AMD , contrairement au trait de soulignement et à lodash, n'ajoute pas de copies supplémentaires des éléments que votre navigateur fournit probablement déjà. Il ajoute plutôt des fonctionnalités natives ES5 aux anciens navigateurs.

Lorsque IE8 et d'autres navigateurs plus anciens disparaissent, vous pouvez simplement supprimer la dépendance ES5-shim sans avoir à porter de code comme vous le feriez avec lodash ou underscore.

1
mikemaccana