Domanda

Ho il codice come il seguente

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


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

Ciascuno di questi moduli è definito in file separati "Modulea.js", "moduleb.js", "InitialDependency.js" e "OtherDependency.js".

Questi moduli sono caricati in sequenza nella mia applicazione. Moduleb è sempre caricato dopo la modulea. Ciò significa che nella fase di ottimizzazione non voglio lo script di modulea combinato nello script creato per il modulo. Voglio il seguente

modulea.built.js include

    .
  • InitialDependency
  • Modulea

    moduleb.built.js include

      .
    • OtherDependency
    • Moduleb

      Non li voglio tutti nello stesso file, tuttavia poiché il modulo potrebbe non essere mai caricato.

      Posso fare uno script di build per entrambi i moduli, ma questo richiederà tempo come ho un bel po 'di moduli nel mio progetto e vorrei uno script di build che costruirà il lotto subito.

      Cosa devo sapere per creare uno script di build per costruire entrambi questi moduli (e altro che seguono lo stesso modello di dipendenza)?

È stato utile?

Soluzione

Per ottenere questo, dovresti giocare con l'opzione di configurazione modules.

Potrebbe sembrare questo:

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

C'è un esempio simile Setup di James qui: https://github.com/requirejs/example-multipage

Naturalmente, costruendo questi moduli separatamente, potresti finire per aver bisogno di aggiornare i percorsi. In tal caso, il modo migliore quindi sarebbe quello di creare un file contenente una chiamata require.config con impostazione speciale per l'app build e inclusa questa configurazione invece del solito. Ma se imposta le dipendenze in un buon modo separato, allora probabilmente starai bene. Con il modo "buono separato", intendo che se moduleA è lo script di base, non dovrebbe avere dipendenze imballate con moduleB - ma immagino che questo sia il buon senso!

Nota sui moduli scintillati : Poiché la configurazione shimmed funziona solo i file Whe sono caricati e da R.JS per ordinare plugin, assicurati di non includere un modulo di spessore senza la sua dipendenza se lo sei Non al 100% sicuro questi saranno caricati prima. Maggiori informazioni qui: https://github.com/requirejs/example-multipage-shim

Spero questo aiuto!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top