在Magento 2的RequireJS实现中,许多核心模块都使用类似这样的配置
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
在RequireJS中,map
配置指令允许开发人员告诉RequireJS
加载模块X并使用模块Y时,请用模块Z替换模块Y- 但仅适用于模块X
或者,在代码中
map: {
'modulex':{
'moduley':'modulez'
}
}
该map
功能基本上允许您通过配置交换模块定义-用Magento来说,它是javascript的模块重写功能。
不过,我不清楚Magento大量使用物业*
的钥匙map
。
map: {
'*': {
editTrigger: 'mage/edit-trigger',
addClass: 'Magento_Translation/add-class'
}
}
所述*
基本上说*为做到这一点映射所有模块,以及其预期用途的情况下是是提供一个基本模块的混叠,可以更具体的模块被改变。
但是,Magento似乎用它代替了RequireJS的paths
property。即似乎Magento可以通过以下方法实现相同的目的
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
然后在需要时有选择地进行特定映射。
有谁知道为什么Magento选择map:*
路径别名作为其方法?即-是我对map
与path
不完整的区别的理解-还是这是“一件六件,另一件六件”的事情之一。还是Magento通过这种方式获得一些额外的行为。
不要求解决特定问题,而是在开始撰写有关它的要求之前澄清对RequireJS和Magento实现的误解:)
path: {foo: 'bar'}
将阻止您bar
明确要求,并且仅允许通过foo
别名进行访问。