Question

J'ai un code comme celui-ci

define("ModuleA", ["InitialDependency"], function (initDep){
   return {};
});


define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
   return {};
});

Chacun de ces modules est défini dans des fichiers distincts « ModuleA.js », « Moduleb.js », « InitialDependency.js » et « OtherDependency.js ».

Ces modules sont chargés séquentiellement dans mon application.ModuleB est toujours chargé après ModuleA.cela signifie que dans la phase d'optimisation, je ne veux pas que le script de ModuleA soit combiné dans le script construit pour ModuleB.je veux ce qui suit

ModuleA.built.js inclut

  • Dépendance initiale
  • ModuleA

ModuleB.built.js inclut

  • AutreDépendance
  • ModuleB

Je ne veux pas qu'ils soient tous dans le même fichier, car ModuleB risque de ne jamais être chargé.

Je peux créer un script de construction pour les deux modules, mais cela prendra beaucoup de temps car j'ai plusieurs modules dans mon projet et j'aimerais un script de construction qui en construira plusieurs en même temps.

Que dois-je savoir pour créer un script de build permettant de construire ces deux modules (et d'autres qui suivent le même modèle de dépendance) ?

Était-ce utile?

La solution

Pour y parvenir, il faudrait jouer avec le modules option de configuration.

Cela pourrait ressembler à ceci :

{
    modules: [
        {
            name: "ModuleA",
            include: [],
            exclude: []
        },
        {
            name: "ModuleB",
            exclude: [
                "moduleA"
            ]
        }
    ]
}

Il existe un exemple de configuration similaire réalisé par James ici : https://github.com/requirejs/example-multipage

Bien sûr, en construisant ces modules séparément, vous devrez peut-être mettre à jour les chemins.Si tel est le cas, la meilleure façon serait alors de créer un fichier contenant un require.config appelez avec un paramètre spécial pour votre application construite et incluant cette configuration au lieu de votre configuration habituelle.Mais si vous définissez les dépendances de manière bien séparée, tout ira probablement bien.Par « bonne séparation », j'entends que si moduleA est le script de base, alors il ne devrait pas avoir de dépendances contenant moduleB - mais je suppose que c'est du bon sens !

Remarque sur les modules calés:Comme la configuration shim ne fonctionne que lorsque les fichiers sont chargés et par r.js pour commander des plugins, assurez-vous de ne pas inclure de module shim sans sa dépendance si vous n'êtes pas sûr à 100 % qu'ils seront chargés avant.Plus d'infos ici: https://github.com/requirejs/example-multipage-shim

J'espère que cette aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top