Quand il y a deux fichiers importés dans le même module, il semble partager la même ressource, comme ceci:
main.js:
require(["cmdA", "cmdB"], function(cmdA, cmdB){
})
cmdA.js:
define(function(require, exports){
console.log("require: cmdA");
var body = require("body");
});
cmdB.js:
define(function(require, exports){
console.log("require: cmdB");
var body = require("body");
});
résultat:
require body
require: cmdA
require: cmdB
Alors pourquoi pas :
require body
require: cmdA
require body
require: cmdB
je pense body.js est nécessaire deux fois, donc la console affiche le corps deux fois. Pourquoi?
Réponses:
8 pour la réponse № 1Par défaut, RequireJS traite les modules comme des singletons. Une fois que RequireJS effectue la résolution de nom et trouve que vous voulez le module X
alors si vous en avez besoin une fois, deux fois, trois millionsParfois, vous obtiendrez toujours le même objet module. La première fois que le module est requis, il est créé. donner à define
est appelé une fois, et une seule fois.
Si tu utilises requirejs.undef
RequireJS peut vous donner plusieurs copies d’un module, mais ce n’est pas l’utilisation de base.