RequireJS è un componente che consente di caricare file e librerie JavaScript in background e in modalità asincrona migliorando così i tempi di caricamento della pagina.
Tutte le configurazioni vengono passate all’interno del file requirejs-config.js
var config = {
map: {...},
paths: {...},
deps: [...],
shim: {...},
config: {
mixins: {...},
text: {...}
}
}
map
La configurazione map connette i moduli AMD ad uno specifico alias e ci consente così di richiamare il modulo js utilizzando semplicemente il suo alias
map: {
'*': {
fiscalCompany: "Ea_ItalianInvoice/js/fiscal-company"
}
}
paths
La configurazione paths è simile a map ma utilizzata per creare un alias per qualsiasi file JS (anche da una URL esterna) o template HTML
paths: {
'owlcarousel': "Ea_Carousel/js/owl.carousel.min",
'acceptjs': 'https://js.authorize.net/v1/Accept'
},
oppure un file HTML
paths: {
'ui/template/form/element/input': '<vendor_name>_<module_name>/template/form/element/input'
}
deps
Viene utilizzato per creare una dipendenza. Può essere utilizzato direttamente all’interno di var config = {} , caricando il modulo specificato in tutte le pagine, oppure all’interno della configurazione shim
deps: [
'js/custom'
],
shim
La configurazione shim crea una dipendenza con una libreria di terze parti
shim: {
'3rd-party-library': ['myJSFile'],
'another-3rd-party-library': {
deps: ['myJSFile'],
exports: 'another3rdPartyLibrary'
}
}
mixins
La configurazione mixins viene utilizzata per sovrascrivere i metodi di un modulo AMD che restituisce un componente UI, un widget jQuery o un oggetto JS. A differenza delle proprietà di configurazione precedenti, la proprietà mixins è annidata nella proprietà config.
config: {
mixins: {
'Vendor_Module/js/module': {
'Vendor_Module/js/module-mixin': true
}
}
}
text
La configurazione text viene utilizzata per impostare le security request headers utilizzando il file text.js.
config: {
text: {
'headers': {
'X-Requested-With': 'XMLHttpRequest'
}
}
}