W implementacji RequireJS Magento 2 wiele podstawowych modułów używa konfiguracji podobnej do tej
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
W RequireJS map
dyrektywa w sprawie konfiguracji pozwala programistom powiedzieć RequireJS
Gdy ładujesz moduł X i używa on modułu Y, zamień moduł Y na moduł Z - ale tylko w przypadku modułu X
Lub w kodzie
map: {
'modulex':{
'moduley':'modulez'
}
}
Ta map
funkcja zasadniczo umożliwia wymianę definicji modułów poprzez konfigurację - w Magento speak jest to funkcja przepisywania modułów dla javascript.
Nie jest dla mnie jasne, czy Magento często używa *
klucza jako klucza do map
nieruchomości.
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
*
Zasadzie mówi * zrobić mapowanie dla wszystkich modułów, a jego stosowanie jest przeznaczony sprawa jest dostarczenie aliasing moduł podstawowy , który można zmienić na bardziej konkretnych modułów.
Wydaje się jednak, że Magento używa go jako zamiennika właściwości RequireJSpaths
. tzn. wydaje się, że Magento mógł osiągnąć to samo, co następuje
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
a następnie selektywnie wykonuje określone mapowanie w razie potrzeby.
Czy ktoś wie, dlaczego Magento wybrał map:*
metodę aliasingu ścieżek? tzn. - czy rozumiem różnicę między niepełną map
a path
niepełną - czy też jest to jedna z tych „Sześć z jednego, pół tuzina innych” rzeczy. Czy może jest jakieś dodatkowe zachowanie Magento, robiąc to w ten sposób.
Nie pytam o rozwiązanie konkretnego problemu, pytam o wyjaśnienie wszelkich nieporozumień dotyczących implementacji RequireJS i Magento, zanim zacznę pisać o tym intensywnie :)
źródło
path: {foo: 'bar'}
zablokuję cię odbar
jawnego wymagania i pozwoli ci na dostęp tylko przezfoo
alias.