Magento 2のRequireJS実装では、多くのコアモジュールがこのような構成を使用します
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
propertyの代わりとして使用するようです。すなわち、Magentoは次のことで同じことを達成できたようです
paths: {
'editTrigger': 'mage/edit-trigger',
'addClass': 'Magento_Translation/add-class',
}
そして、必要なときに特定のマッピングを選択的に行います。
Magentoがmap:*
パスエイリアシングの方法として選択した理由を誰もが知っていますか?すなわち-の違いの理解map
とpath
不完全です-または、これらの「1つのうちの6つ、他の6つ」のものの1つです。または、この方法でMagentoが取得する追加の動作があります。
特定の問題を解決することを求めず、RequireJSとMagentoの実装についての誤解を明確にするように求めます。
path: {foo: 'bar'}
要求することをブロックbar
し、foo
エイリアスによるアクセスのみを許可します。