Je suis nouveau sur Magento2 et notre organisation vient d'obtenir la licence EE. Je l'ai installé sur ma machine locale et le modèle par défaut crache ce qui suit mélangé avec HMTL:
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"customer": {
"component": "Magento_Customer/js/view/customer"
}
}
}
}
}
</script>
Et appelle comme
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"messages": {
"component": "Magento_Theme/js/view/messages"
}
}
}
}
}
</script>
Est-ce à voir avec KnockoutJS
ou RequireJS
? Quels sont ces appels et quelle est cette nouvelle balise de script<script type="text/x-magento-init">
magento-enterprise
magento2
frontend
knockoutjs
TheBlackBenzKid
la source
la source
Réponses:
Utilisation générale du "type de script"
Lors de l'utilisation
<script type="....">
du navigateur interprète uniquement ce qu'il sait (commetext/javascript
par exemple).Tout le reste est ignoré.
Fondamentalement, en utilisant un type personnalisé, vous ajoutez des informations à la page sans l'afficher et sans que le navigateur l'interprète et vous pourrez ensuite utiliser ces informations comme vous le souhaitez.
Comment Magento utilise cela
Magento utilise ces sections après le chargement de la page.
Le code qui les utilise se trouve dans
lib/web/mage/apply/scripts.js
.Je ne comprends pas complètement ce que fait le fichier mentionné ci-dessus, mais il y a un commentaire à l'intérieur du fichier qui dit ceci:
Conclusion / spéculation
Je suppose que c'est un moyen de définir un comportement js différent pour différents éléments de la page sans avoir à réécrire le modèle qui contient les éléments.
Il vous suffit d'ajouter un
<script type="text/x-magento-init">
dans l'un de vos modèles, d'inclure votre modèle dans la page et magento déplace "automatiquement" le comportement vers le bon élément.la source
app/design/frontend/package/template/Magento_Catalog/templates/product/view/gallery.phtml
mais pas de chance. Des conseils sur la suppression des comportements par défaut tels que la loupe de produit et / ou la galerie de produits (fotorama pour être précis)?En outre,
fournisseur \ magento \ magento2-base \ lib \ web \ mage \ apply \ scripts.js
En utilisant les guides ci-dessous
http://devdocs.magento.com/guides/v2.1/javascript-dev-guide/javascript/js_init.html
La syntaxe standard est
En se référant
http://alanstorm.com/magento_2_javascript_init_scripts
http://alanstorm.com/magento_2_introducing_ui_components
Magento lui-même utilise souvent la
x-magento-init
méthode pour appeler un module RequireJS en tant que programme. Cependant, la véritable puissance dex-magento-init
est la possibilité de créer un composant Javascript Magento.Les composants Javascript Magento sont des modules RequireJS qui renvoient une fonction.
Magento rencontre une
text/x-magento-init
balise de script avec un attribut *, il1] Initialiser le module RequireJS spécifié (Magento_Ui / js / core / app)
2] Appelez la fonction retournée par ce module, en passant l'objet de données
J'espère que ça aide
la source