Хорошо, я думаю, что я, возможно, решил это, и я полагаю, что документация неоднозначна и нуждается в обновлении, чтобы прояснить процесс.
Я переместил requirejs-config.jsиз внутри web/jsи webкаталогов соответственно для обоих Magento_Themeи корень моей темы на <Vendor>/<theme>и теперь мой RequireJS конфигурации сливается в основной requirejs-config.jsсо всеми другими включает в себя.
Итак, похоже, что вы должны включить requirejs-config.jsфайл в следующих местах в зависимости от требований темы / модуля.
Уровень темы
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Уровень модуля
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Итак, в вашей requirejs-config.jsтеме вы должны сопоставить свой компонент с путем, а затем использовать shimдля объявления любых зависимостей:
var config = {
map: {
'component': 'js/component'
},
shim: {
'component': {
deps: ['jquery']
}
}
};
Затем вам нужно будет создать шаблон для хранения инициализации компонентов с помощью <script>тега (если вы не присоедините его непосредственно к элементу в файле .phtml), если это маршрут, по которому вы хотите перейти, включите следующее содержимое:
<script type="text/x-magento-init">
{
"*": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
В качестве альтернативы, свяжите его с элементом:
<script type="text/x-magento-init">
{
"#element": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Затем просто включите шаблон .phtml в инструкции по компоновке, например, я разместил мой в default.xmlрасположенном app/design/frontend/<Vendor>/<theme>/Magento_Theme/layoutпод узлом body и ссылался на:
<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />