/ / Pourquoi RequireJS ne charge-t-il pas plus d'une fois un module dont j'ai besoin plusieurs fois? - javascript, requirejs, require

Pourquoi RequireJS ne charge-t-il pas plusieurs fois un module dont j'ai besoin plusieurs fois? - javascript, requirejs, requis

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 № 1

Par 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.undefRequireJS peut vous donner plusieurs copies d’un module, mais ce n’est pas l’utilisation de base.