2012-06-13 44 views
6

Ho un problema con requirejs. Forse non capisco come dovrebbe funzionare, ma per me sembra abbastanza controproducente che requirejs non mi permetta di suddividere il mio codice in diversi script indipendenti. Dal momento che sto usando Play e il suo linguaggio template per costruire la struttura della pagina, ho cercato di inserire diverse logiche javascript in diverse parti della pagina per quanto riguarda i componenti. Per esempio: ho un main.scala.html che contiene componenti di cui ogni pagina ha bisogno, tutto sommato con la loro logica js. Quando un'altra pagina ha bisogno di una barra di navigazione, la inserisco insieme alla logica corrispondente. Quindi ho un main.js e un navigation.js. Dal momento che dipendono solo da Jquery mobile e non l'uno dall'altra, volevo caricarli con tag diversi. Il secondo script non viene mai caricato, quindi la mia intuizione è che requirejs sembra non consentire più attributi principali dei dati su una pagina.Script multipli con requirejs

Quindi le mie domande sono: è possibile avere più script indipendenti in una pagina usando requirejs? E se no, perché?

Grazie in anticipo

+0

e la mia domanda è: dove è il tuo codice? – Joseph

risposta

3

L'idea è che avete un solo data-main attributo che carica il main.js, poi dentro main.js si può condizionale caricare altri script

if (something) { 
    require(["this"], function(this) { ... }); 
} else { 
    require(["that"], function(that) { ... }); 
} 

See: http://requirejs.org/docs/start.html

Or ho frainteso la domanda?

+0

Sì, quella era la mia domanda. Semplicemente non mi sembra molto pratico. Ma se questo è l'unico modo per farlo, lo farò. Grazie mille. – Calardan

+1

Sono d'accordo con @Calardan ... il modo in cui hai descritto questa soluzione, il principale deve sapere su ogni script che potrei aver bisogno nell'intero sito ... non sembra una buona separazione di preoccupazioni. – Mir

0

data-main è per quando si dispone di una sola app requirejs una pagina. Se hai multipli, non utilizzare data-main. E 'abbastanza semplice, ecco un esempio utilizzando le main.js e Navigation.js

<script src='require.js'></script> 
<script> 
    require(['main']); 
    require(['navigation']); 
</script> 

Anche se direi la pagina ha bisogno Navigation.js. Tratta ogni pagina come un'app. Quindi i dati sono normalmente nella tua main.js.

E poi dentro main.js:

// start independent load of navigation.js 
require(['navigation']); 
// load modules required for main 
require(['moduleA', 'moduleB'], function(moduleA, moduleB){ 
    // inside main.js 
});