So che questa domanda si presenta spesso in modo simile, ma nessuna soluzione sembra adattarsi perfettamente alle mie esigenze. Ho il seguente problema:Il modo migliore per concatenare i file JavaScript con le dipendenze e visualizzarli come modulo?
In fase di sviluppo uso più file JS (un singolo file ogni "oggetto"). Questi file JS hanno diverse dipendenze l'uno dentro l'altro - alcuni si affidano ad altri e ho bisogno di caricarli prima. Attualmente utilizzo RequireJS per caricare ogni file JS nell'ordine corretto, quindi definisco un modulo per ogni file. Bene e dandy. Ma ora voglio concatenare tutti i miei file JS in un unico file JS che dovrebbe essere un modulo stesso. Io uso il RequireJS optimizer r.js per farlo. Il mio problema: Ogni file JS è concatenato a un grande file JS, ma la definizione del modulo per ogni oggetto è inclusa. Non ho un grande modulo in un grande file, ma molti moduli in un unico grande file.
Successivamente ho provato il grunt per concatenare che funziona bene, ma ignora le dipendenze dei file. Semplicemente concatena ogni file in ordine alfabetico o devo codificare l'ordine nel mio gruntfile.
Come posso risolvere questo?
Proprio come un'illustrazione per il mio problema: Ho seguito i file (pseudo codice):
FileA
- define FileA module
- depends on FileB
- FileA Logic
FileB
- define FileB module
- FileB Logic
E voglio questo output:
LibFile
- define LibFile module
- FileB Logic, FileA Logic
ma ottengo questo con r.js (la definizione del modulo da FileA e FileB è copiata):
LibFile
- define FileB module
- FileB Logic
- define FileA module
- depends on FileB
- FileA Logic
E ottengo questo w esimo grugnito (nell'ordine sbagliato):
LibFile
- FileA Logic
- FileB Logic
Forse che le domande è un po 'stupido, ma non riesco proprio a risolvere questo con gli strumenti tutti sembrano usare ... ho provato il plugin grugnito-requirejs, pure. Ma getta parecchi errori che non ho potuto risolvere.
Grazie, Pipo
Perché averli tutti in un unico file è un problema ? Puoi usare quel file come modulo se hai usato il paradigma "pacchetto" per registrare i piccoli ... – ZenMaster
Ciao ZenMaster, cosa intendi con paradigma "pacchetto"? Ho usato "define ([" ./ fileB "], function (fileB) {// codice per fileA; return fileA;});" per definire i miei moduli. Ma se ho molti piccoli moduli come questo su un grosso file e provo a caricare il file come questo "define ([" ./ LibFile "], function (LibFile) {// some code;});" LibFile non è definito. Non posso richiedere il file grande come un modulo. – Pipo
Vedere la risposta. Spero possa aiutare. – ZenMaster