se si dispone di un modulo RequireJS in questo modo:RequireJS delle dipendenze
define(
[
'#patches',
'backbone',
'underscore',
'react',
'#allCollections',
'#allModels',
'app/js/routers/router',
'#allTemplates',
'#allControllers',
'#allRelViews'
],
function(){
var patches = arguments[0];
});
non v'è alcun modo di sapere che la dipendenza viene caricato prima? Nel mio caso, "#patches" sono alcune funzioni di utilità window.X che voglio caricare prima di ogni altra cosa. Devo configurarlo in modo diverso per garantirlo?
(nel mio caso "#' è solo la mia notazione per indicare un modulo il cui percorso è predefinito nel mio file di configurazione principale)
Come già detto François Richard, è possibile influenzare l'ordine in cui le dipendenze si caricano implicitamente ma non lo consiglierei come best practice. La solita strada da percorrere è che ogni dipendenza stessa stabilisce le sue dipendenze, quindi se ad esempio il tuo '# allRelViews' ha bisogno delle utilità della finestra, dovrebbe indicarlo nella sua chiamata' define'. Se non hai il controllo della dipendenza ti suggerirei di usare l'approccio * shim * che è stato suggerito nella risposta accettata - l'unico altro modo in cui vedo è modificare la sorgente, ma dovresti farlo per ogni aggiornamento della biblioteca. – mfeineis
Backbone e Underscore sono conformi a AMD. (Chiamano 'define'.) Se i tuoi moduli chiamano anche' define', allora la maggior parte dei moduli che mostri nella tua domanda non possono essere usati con la risposta che hai accettato perché ** 'shim' ha un comportamento definito solo per non- Moduli AMD **. Se usi 'shim' per un modulo che chiama' define', i risultati non sono definiti. (Quando l'ho provato, di solito veniva ignorato, ma poiché non ci sono semantica, RequireJS è libero di cambiare ciò che fa da una versione all'altra. È come un puntatore non inizializzato in C: non è garantito quale valore ottiene.) – Louis
Qualche soluzione per i moduli AMD attuali? – Patrick