In der RequireJS-Implementierung von Magento 2 verwenden viele Kernmodule eine solche Konfiguration
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
In RequireJS map
können Entwickler anhand der Konfigurationsanweisung festlegen, dass RequireJS verwendet werden soll
Wenn Sie Modul X laden und es Modul Y verwendet, ersetzen Sie Modul Y durch Modul Z - jedoch nur für Modul X
Oder im Code
map: {
'modulex':{
'moduley':'modulez'
}
}
Mit dieser map
Funktion können Sie Moduldefinitionen über die Konfiguration austauschen. In Magento ist dies eine Funktion zum Umschreiben von Modulen für Javascript.
Was mir jedoch nicht klar ist, ist Magentos häufiger Gebrauch des *
als Schlüssel für die map
Immobilie.
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
Das *
sagt im Grunde * tun , um diese Zuordnung für alle Module und der bestimmungsgemäßen Gebrauch Fall ist , bietet ein Basismodul Aliasing , das für spezifischere Module verändert werden kann.
Magento scheint es jedoch als Ersatz für das paths
Eigentum von RequireJS zu verwenden . Das heißt, es scheint, dass Magento das Gleiche mit Folgendem hätte erreichen können
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
und führt dann bei Bedarf selektiv eine spezifische Zuordnung durch.
Weiß jemand, warum Magento map:*
als Methode für das Pfad-Aliasing gewählt hat? dh - ist mein Verständnis des Unterschieds zwischen map
und path
unvollständig - oder ist dies eines dieser "Sechs von einem, einem halben Dutzend der anderen" Dinge. Oder gibt es ein zusätzliches Verhalten, das Magento auf diese Weise erhält?
Nicht darum bitten, ein bestimmtes Problem zu lösen, Missverständnisse über RequireJS und Magentos Implementierung zu klären, bevor ich anfange, ausführlich darüber zu schreiben :)
quelle
path: {foo: 'bar'}
blockiert es Siebar
explizit und erlaubt nur den Zugriff perfoo
Alias.