In un ambiente RequireJS, qual è il modo migliore per consentire a alcuni moduli AMD di utilizzare Lo-Dash mentre altri utilizzano contemporaneamente Underscore?Uso di Lo-Dash e Underscore in modo simulante nell'ambiente RequireJS
risposta
Sono stato in grado di risolvere il problema me stesso in modo abbastanza semplice. Specificamente utilizzare il percorso lodash
per i moduli che richiedono Lo-Dash e underscore
per i moduli che richiedono "sottolineatura":
require.config({
paths: {
'underscore': 'path-to-my-underscore-file',
'lodash': 'path-to-my-lodash-file'
}
});
In questo modo, i due librerie possono essere utilizzati contemporaneamente senza alcuna interferenza.
Contrariamente a quanto si crede e alle affermazioni, Lo-Dash non è uno perfetto sostituzione per Underscore.
Non sono sicuro di chi abbia sostenuto che Lo-Dash è il sostituto perfetto per Underscore a parte per MAYBE Lo-Dash? – Xaxis
Il numero di voti positivi sul primo commento di questa domanda indica l'idea sbagliata comune. Probabilmente è scontato perché sia Underscore che Lo-Dash usano il "_" globale. –
La soluzione di pathing che hai già menzionato è un'opzione (credo sia la migliore). Conosco un modo alternativo, ma non penso necessariamente che sia migliore poiché è più ingannevole. Puoi rimappare cosa significano "lodash" e "underscore" per vari pacchetti.
requirejs.config({
paths: {
'underscore': 'path-to-my-underscore-file',
'lodash': 'path-to-my-lodash-file'
},
map: {
'some/lodash_compatible_module': {
'underscore': 'lodash'
},
'some/lodash_compatible_folder': {
'underscore': 'lodash'
},
'some/oldmodule_or_folder': {
'underscore': 'underscore'
}
}
});
Se si desidera creare una facciata si potrebbe anche fare qualcosa di simile anche questo:
requirejs.config({
paths: {
utils: 'lodash',
'underscore': 'path-to-my-underscore-file',
'lodash': 'path-to-my-lodash-file'
},
map: {
'some/lodash_compatible_module': {
'utils': 'lodash'
},
'some/lodash_compatible_folder': {
'utils': 'lodash'
},
'some/oldmodule_or_folder': {
'utils': 'underscore'
}
}
});
Mentre ci sono alcuni aspetti negativi con questo approccio. Ci sono cose interessanti. Vale a dire essere in grado di rimappare le dipendenze di terze parti che potrebbero pensare che un pacchetto sia (se questo è un problema).
Per ulteriori informazioni su come mappa opere check out: http://requirejs.org/docs/api.html#config-map
Cablaggio molto interessante! –
Lo-dash dovrebbe essere un rimpiazzo per la sottolineatura (ma non viceversa) in modo da perché non basta usare Lo-dash? –
Possiedo moduli legacy non compatibili con Lo-Dash che devono essere eseguiti contemporaneamente con i moduli più recenti che utilizzano Lo-Dash. Refactoring e testing dei moduli precedenti non è attualmente possibile. –
. . . E contrariamente alla credenza popolare e alle affermazioni, Lo-Dash non è un sostituto perfetto per Underscore. –