2013-10-07 12 views
23

Cercando di capire dove è giusto usare "mappa" con un carattere jolly vs "percorsi".Requirejs: percorsi vs mappa

Guardando la fonte del fabbisogno (ma certamente non essendo al 100% fluente con esso) sembra che non ci sarebbe funzionalmente alcuna differenza tra questi due frammenti. È vero?

utilizzando percorsi:

require.config({ 
    baseUrl: "include/js/", 
    paths: { 
    foo: "stuff/foo", 
    } 
    }); 

usando la mappa:

require.config({ 
    baseUrl: "include/js/", 
    map: { 
    '*': {foo: "stuff/foo"}, 
    } 
    }); 

risposta

7

Dai documenti RequireJS "Inoltre, la configurazione dei percorsi è solo per l'impostazione dei percorsi di root per gli ID modulo, non per il mapping di un ID modulo con un altro."

Ciò significa che "percorsi" è pensato per mappare solo il percorso della risorsa quando non si trova nella posizione predefinita (baseUrl). Immagino che questo sia quello che stavi cercando di fare.

D'altra parte, con "mappa" puoi avere diverse versioni della tua risorsa (foo1, foo2 ...) che puoi mappare per essere caricata da percorsi diversi (es. Vuoi caricare foo1 da un browser desktop e foo2 che è una modifica del primo da un browser mobile).

Quindi, a meno che tu non abbia versioni diverse di foo, utilizzerei "percorso" anche se hai ragione e "mappa" funzionerebbe anche in quel caso.

+0

è "percorsi" non "percorso" :) ma buona risposta! – OZZIE

8

ho trovato una differenza, e questo è, nel caso di plugin requirejs caricatore, esempio Esempio: define(['cs!module'], function(){...}) per CoffeeScript.

L'utilizzo della parte map:* di configurazione per la dichiarazione dei plug-in (e paths per i moduli dipendenti) ha funzionato nel browser. Tuttavia, in Node, Requirejs non riuscirebbe a localizzare i plugin del caricatore a meno che non fossero sotto paths.

Alla fine, per poter eseguire la stessa configurazione in Nodo e nel browser, mi sono liberato della sezione map:* e dichiarato tutto in paths e funziona perfettamente per me ora, anche se spero ancora di ottenere qualche chiarimento sul perché.

4

C'è anche un'altra differenza importante con la mappa di configurazione. Si definisce un prefisso che verrà utilizzato nei mapping.

Per esempio, questo significherebbe che foo verrà mappata stuff/foo ma anche foo/bar/baz/bam verrà mappata stuff/foo/bar/baz/bam.

Problemi correlati