Я новичок в Magento2, и наша организация только что получила лицензию EE. Я установил его на свой локальный компьютер, и шаблон по умолчанию выдает следующее, смешанное с HMTL:
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"customer": {
"component": "Magento_Customer/js/view/customer"
}
}
}
}
}
</script>
И звонки как
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"messages": {
"component": "Magento_Theme/js/view/messages"
}
}
}
}
}
</script>
Это связано с KnockoutJS
или RequireJS
? Что это за вызовы и что это за новый тег-скрипт<script type="text/x-magento-init">
magento-enterprise
magento2
frontend
knockoutjs
TheBlackBenzKid
источник
источник
Ответы:
Общее использование "типа сценария"
При использовании
<script type="....">
браузер интерпретирует только то, что он знает (какtext/javascript
например).Все остальное игнорируется.
В основном используя пользовательский тип, вы добавляете информацию на страницу, не отображая ее и не интерпретируя ее браузером, и позже вы можете использовать эту информацию по своему усмотрению.
Как Magento использует это
Magento использует эти разделы после загрузки страницы.
Код, который их использует, находится в
lib/web/mage/apply/scripts.js
.Я не совсем понимаю, что делает упомянутый выше файл, но внутри файла есть комментарий, который гласит:
Заключение / Спекуляция
Я предполагаю, что это способ установить различное поведение js для разных элементов на странице без необходимости переписывать шаблон, содержащий элементы.
Вам нужно только добавить
<script type="text/x-magento-init">
один из ваших шаблонов, включить ваш шаблон на страницу, и magento «автоматически» перемещает поведение в нужный элемент.источник
app/design/frontend/package/template/Magento_Catalog/templates/product/view/gallery.phtml
но не повезло. Какой-нибудь совет по удалению поведения по умолчанию, такого как лупа продукта и / или галерея продукта (фоторамка, если быть точным)?К тому же,
поставщик \ Magento \ magento2 база \ Lib \ Web \ магом \ применить \ scripts.js
Используя приведенные ниже руководства
http://devdocs.magento.com/guides/v2.1/javascript-dev-guide/javascript/js_init.html
Стандартный синтаксис
Ссылаясь на
http://alanstorm.com/magento_2_javascript_init_scripts
http://alanstorm.com/magento_2_introducing_ui_components
Сам Magento часто использует
x-magento-init
метод для вызова модуля RequireJS в качестве программы. Тем не менее, реальная силаx-magento-init
заключается в способности создавать Magento Javascript Component.Компоненты Magento Javascript - это модули RequireJS, которые возвращают функцию.
Magento встречает
text/x-magento-init
скрипт-тег с атрибутом *, он1] Инициализировать указанный модуль RequireJS (Magento_Ui / js / core / app)
2] Вызвать функцию, возвращаемую этим модулем, передавая объект данных
Надеюсь, это поможет
источник