2013-04-01 15 views
5

Sono in esecuzione le inizializzazioni jQuery da un modulo RequireJS.Esiste un modo per eseguire i moduli RequireJS prima che tutti gli elementi vengano caricati?

Ho notato tuttavia che RequireJS attende fino a quando tutte le risorse della pagina vengono caricate prima di eseguire il mio codice.

Sto caricando alcune immagini di grandi dimensioni nella mia pagina, ma non voglio aspettare fino a quando non vengono caricate per configurare i miei plugin jQuery.

C'è una buona pratica quando si tenta di fare questo?

Qui è la mia messa a punto:

index.html

<script data-main="js/main.js" src="js/libs/require.js"></script> 

main.js

require(["inits"], function(Inits) { 
    //Nothing here yet. 
}); 

inits.js

define([ 
     'jquery', 
     'jquery.plugin1', 
     'jquery.plugin2', 
     'etc' 
], function ($) { 
    //jQuery Document Ready. 
    $(function(){ 
     //Jquery Init Code here 
    }); 
} 

Sono nuovo di RequireJS, sto sbagliando?

risposta

2

OK, quindi ho un lavoro che sembra funzionare.

riferimento a questo biglietto qui:

https://github.com/jrburke/requirejs/issues/463

ho spostato la mia tag script con i dati-principale al fine della mia tag body.

<script data-main="js/main.js" src="js/libs/require.js"></script> 
</body> 

E poi scartare le mie funzioni jQuery:

Prima

define([ 
    'jquery', 
    'jquery.plugin1', 
    'jquery.plugin2', 
    'etc' 
], function ($) { 
    //jQuery Document Ready. 
    $(function(){ 
     //Jquery Init Code here 
    }); 
} 

Dopo

define([ 
    'jquery', 
    'jquery.plugin1', 
    'jquery.plugin2', 
    'etc' 
], function ($) { 
    //Jquery Init Code here with no Ready Wrapper. 
} 

Sembra di lavorare, e di essere alla fine del il file html "dovrebbe" impedire che ci siano problemi con il DOM. Tuttavia, non sono del tutto a mio agio con questo approccio. Vorrei tenerlo aperto per vedere se altri hanno un'idea migliore.

Problemi correlati