Saya baru mengenal Magento2 dan organisasi kami baru saja mendapatkan lisensi EE. Saya telah menginstalnya di mesin lokal saya dan templat default meludahkan campuran berikut dengan HMTL:
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"customer": {
"component": "Magento_Customer/js/view/customer"
}
}
}
}
}
</script>
Dan panggilan seperti
<script type="text/x-magento-init">
{
"*": {
"Magento_Ui/js/core/app": {
"components": {
"messages": {
"component": "Magento_Theme/js/view/messages"
}
}
}
}
}
</script>
Apakah ini ada hubungannya dengan KnockoutJS
atau RequireJS
? Apa saja panggilan ini dan apa tag skrip baru ini<script type="text/x-magento-init">
magento-enterprise
magento2
frontend
knockoutjs
TheBlackBenzKid
sumber
sumber
Jawaban:
Penggunaan umum "jenis skrip"
Saat menggunakan
<script type="....">
browser mengartikan hanya apa yang diketahuinya (sepertitext/javascript
misalnya).Ada lagi yang diabaikan.
Pada dasarnya menggunakan tipe khusus Anda menambahkan informasi ke halaman tanpa menampilkannya dan tanpa browser menafsirkannya dan nanti Anda dapat menggunakan informasi itu seperti yang Anda inginkan.
Bagaimana Magento menggunakan ini
Magento menggunakan bagian-bagian ini setelah halaman dimuat.
Kode yang menggunakannya terletak di
lib/web/mage/apply/scripts.js
.Saya tidak mengerti sepenuhnya apa file yang disebutkan di atas, tetapi ada komentar di dalam file yang menyatakan ini:
Kesimpulan / Spekulasi
Saya berspekulasi bahwa ini adalah cara untuk mengatur perilaku js yang berbeda untuk elemen yang berbeda di halaman tanpa perlu menulis ulang template yang berisi elemen.
Anda hanya perlu menambahkan a
<script type="text/x-magento-init">
di salah satu templat Anda, sertakan templat Anda di halaman dan magento "otomatis ajaib" memindahkan perilaku ke elemen yang tepat.sumber
app/design/frontend/package/template/Magento_Catalog/templates/product/view/gallery.phtml
tetapi tidak berhasil. Adakah saran untuk menghapus perilaku default seperti pembesar produk dan / atau galeri produk (fotorama tepatnya)?Tambahan,
vendor \ magento \ magento2-base \ lib \ web \ mage \ apply \ scripts.js
Dengan menggunakan panduan di bawah ini
http://devdocs.magento.com/guides/v2.1/javascript-dev-guide/javascript/js_init.html
Sintaks Standar Adalah
Dengan merujuk
http://alanstorm.com/magento_2_javascript_init_scripts
http://alanstorm.com/magento_2_introducing_ui_components
Magento sendiri sering menggunakan
x-magento-init
metode ini untuk memanggil modul RequireJS sebagai program. Namun, kekuatan sebenarnyax-magento-init
adalah kemampuan untuk membuat Komponen Javascript Magento.Komponen Magento Javascript adalah modul RequireJS yang mengembalikan fungsi.
Magento menemukan
text/x-magento-init
tag skrip dengan atribut *, itu akan1] Inisialisasi modul RequireJS yang ditentukan (Magento_Ui / js / core / app)
2] Panggil fungsi yang dikembalikan oleh modul itu, meneruskan objek data
Semoga ini bisa membantu
sumber