2013-07-05 2 views
6

Ho una serie di moduli requirejs con nome con funzione di costruzione come funzione.requirejs - costruisce un modulo quando è definito, non quando è richiesto

define('myModule', [ 'import1', 'import2' ], function(i1, i2) { 
    ... 
}); 

Voglio essere in grado di

  • allegare moduli HTML per corect NON USARE requirejs API tramite tag script
  • collegare e moduli di uso UTILIZZO requirejs API

Ora, quindi allego uno script con la chiamata define a un documento , lo script viene caricato con successo, ma il modulo non viene definito, il costruttore non viene chiamato.

È un comportamento normale? C'è qualche soluzione per risolvere questo problema?

+0

Che cosa è necessario per definire un modulo per quando nulla lo utilizza (lo richiede)? – Bergi

+0

1. Ho un codice legacy che non conosce nulla sui moduli e che dipende dall'allegato di file. 2. Voglio avere alcuni moduli, contenenti oggetti globali singleton. Voglio collegarli come una sceneggiatura in testa. Ho bisogno di moduli qui perché 'dipendono da altri moduli per funzionare. – Olegas

+0

r.js con ottimizzatore, potrebbe essere una scelta solida – dmi3y

risposta

6

lo script viene caricato correttamente, ma il costruttore non viene chiamato. È un comportamento normale?

Sì. Esse vengono eseguite solo quando necessario, il define potrebbe essere rinominato come register. Inoltre potrebbe dover attendere comunque le sue dipendenze.

C'è qualche soluzione per risolvere questo problema?

Se si desidera eseguire, basta effettuare una chiamata require() per esso (not in the same file though).

Ho un codice legacy che non conosce nulla sui moduli e che dipende dall'allegato di file.

Mentre l'allegato di script li carica correttamente (in modo sincrono!), Verranno eseguiti in modo asincrono. È meglio che avvolga il codice precedente in require s (che non dovrebbe interrompere nulla).

+0

Perché non nello stesso file? Non ho capito da un link specificato ... – Olegas

+0

Tecnicamente, dove non ci sono limitazioni per eseguire i moduli in modo sincrono se tutte le dipendenze sono caricate (dai tag