Nous aimons RequireJS et AMD au cours du développement, où l'on peut modifier un module, appuyez sur recharger dans notre navigateur, et de voir immédiatement le résultat. Mais quand vient le temps de concaténer nos modules dans un fichier unique pour un déploiement en production, il n'y a apparemment un AMD chargeur, toujours actuelle, de savoir si ce chargeur est RequireJS lui-même ou son petit partenaire "amande", comme expliqué ici:
http://requirejs.org/docs/faq-optimization.html#wrap
Ma confusion est: pourquoi un chargeur nécessaires? Sauf si vous avez des circonstances très exceptionnelles, il est nécessaire pour vous de faire require()
les appels à l'intérieur de vos modules, il semblerait qu'une série de modules AMD pourrait être concaténés sans un chargeur de présenter à tous. Le plus simple serait par exemple une paire de modules comme suit.
ModA.js:
define([], function() {
return {a: 1};
});
ModB.js:
define(['ModA'], function(A) {
return {b : 2};
});
Compte tenu de ces deux modules, il semble qu'un concatenator pourrait simplement produire le texte suivant, et pas surcharger le serveur de production ou d'un navigateur avec le surplus de bande passante ou de calcul requis par RequireJS ou d'Amande.
J'imagine un concatenator qui produit (et je suis en utilisant chevron-citations «,» pour montrer où les extraits de deux modules ci-dessus ont été insérés):
(function() {
var ModA = «function() {
return {a: 1};
}»();
var ModB = «function(A) {
return {b : 2};
}»(ModA);
return ModB;
})();
Ce, pour autant que je peux voir, serait de reproduire correctement la sémantique de la DMLA, avec un minimum de superflu et de la colle JavaScript. Est-il une telle concatenator disponible? Si non, en voudrais-je être un imbécile pour penser que je devrais écrire un sont il n'y a vraiment très peu de bases de code qui consistent en de simples et propres modules écrit avec define()
et que jamais besoin de plus d' require()
les appels à l'intérieur que le coup d'envoi plus tard asynchrone extrait de code?