В реализации RequireJS в Magento 2 многие основные модули используют такую конфигурацию
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
В RequireJS map
директива конфигурации позволяет разработчикам сообщать RequireJS
Когда вы загружаете модуль X, и он использует модуль Y, замените модуль Y на модуль Z - но только для модуля X
Или в коде
map: {
'modulex':{
'moduley':'modulez'
}
}
Эта map
функция, в основном, позволяет вам менять определения модулей через конфигурацию - в языке Magento это функция перезаписи модулей для javascript.
Что мне не понятно, так это интенсивное использование Magento *
ключа в качестве map
свойства.
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
В *
основном говорится * сделать это сопоставление для всех модулей, и его предполагаемый вариант использования заключается в предоставлении базового псевдонима модуля, который можно изменить для более конкретных модулей.
Тем не менее, Magento , как представляется , использовать его в качестве замены для RequireJS игровой paths
собственности . то есть кажется, что Magento мог бы достичь того же с помощью следующего
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
и затем выборочно делает определенное отображение при необходимости.
Кто-нибудь знает, почему Magento выбрал в map:*
качестве метода наложения пути? то есть - мое понимание разницы между map
и path
неполным - или это одна из тех вещей «шесть из одной, полдюжины других». Или есть какое-то дополнительное поведение, которое получает Magento, делая это таким образом.
Не просить решить конкретную проблему, просить прояснить любые недоразумения в реализации RequireJS и Magento, прежде чем я начну об этом много писать :)
path: {foo: 'bar'}
вы заблокируете запросbar
явно и разрешите доступ к нему только поfoo
псевдониму.