Untuk memuat main.js
file khusus pada semua halaman (dengan cara RequireJS) ini adalah cara yang baik:
1) Buat main.js
Buat main.js
di dalam folder tema
<theme_dir>/web/js/main.js
dengan konten ini:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
Singkatnya : kami mendeklarasikan dependensi di awal, mis"jquery"
. Kami mendefinisikan sebagai parameter fungsi, nama variabel untuk menggunakan dependensi dalam fungsi, misalnya "jquery" --> $
. Kami memasukkan semua kode khusus kami ke dalam function($) { ... }
.
2) Nyatakan main.js
dengan sebuah requirejs-config.js
file
Membuat requirejs-config.js
file di dalam folder tema:
<theme_dir>/requirejs-config.js
dengan konten ini:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
adalah jalan menuju kebiasaan kita main.js
. Ekstensi ".js" tidak diperlukan.
Kami requirejs-config.js
akan digabung dengan yang requirejs-config.js
ditentukan di Magento.
PersyaratanJS akan memuat main.js
file , pada setiap halaman, menyelesaikan dependensi dan memuat file dengan cara async.
Opsional: Termasuk perpustakaan pihak ketiga
Ini adalah cara untuk memasukkan perpustakaan pihak ketiga.
1) Tambahkan perpustakaan di web/js
:
<theme_dir>/web/js/vendor/jquery/slick.min.js
2) Buka requirejs-config.js
dan tambahkan konten ini:
var config = {
deps: [
"js/main"
],
// Paths defines associations from library name (used to include the library,
// for example when using "define") and the library file path.
paths: {
'slick': 'js/vendor/jquery/slick.min',
},
// Shim: when you're loading your dependencies, requirejs loads them all
// concurrently. You need to set up a shim to tell requirejs that the library
// (e.g. a jQuery plugin) depends on another already being loaded (e.g. depends
// on jQuery).
// Exports: if the library is not AMD aware, you need to tell requirejs what
// to look for so it knows the script has loaded correctly. You can do this with an
// "exports" entry in your shim. The value must be a variable defined within
// the library.
shim: {
'slick': {
deps: ['jquery'],
exports: 'jQuery.fn.slick',
}
}
};
Terlihat lebih rumit dari apa sebenarnya.
3) Tambahkan ketergantungan dalam main.js
:
define([
'jquery',
'slick'
],
function($) {
// ...
});
bootstrap.js
dengan cara yang sama saya sertakanslick.js
dalam contoh di atas. Untuk nilai shim Anda dapat mencoba menggunakan ini'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }
:, seperti yang dijelaskan di sini: stackoverflow.com/a/13556882/3763649var config = { deps: [ "js/animate", "js/incase", "js/confetti" ], paths: { "jquery.bootstrap":"js/bootstrap.min" }, shim:{ 'jquery.bootstrap':{ 'deps':['jquery'] } } }; require(["jquery",'jquery.bootstrap', 'jquery/ui', 'jquery/validate', 'mage/validation/validation', 'domReady!']);
Minicart saya berhenti berfungsi dengan iniGandakan file:
Untuk
Untuk informasi lebih lanjut:
http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html
Semoga berhasil!
BTW membaca resmi devdocs frontend dari magento untuk mendapatkan dasar :)
sumber
Anda dapat menambahkan file JS menggunakan xml seperti di bawah ini. Ini akan menambahkan js di semua halaman.
Dengan modul khusus:
Buat
default.xml
file di modul Anda.app/code/vendor_name/module_name/view/frontend/layout/default.xml
sumber
Metode menambahkan js menggunakan
default_head_blocks.xml
file tidak akan berfungsi untuk plugin JQuery pihak ke-3. Jadi, jika Anda ingin menambahkan plugin JQuery khusus dan menggunakannya, Anda harus menggunakannyarequirejs-config.js
file.Untuk menjawab pertanyaan Anda satu per satu:
1) & 2) Anda tidak perlu membuat modul untuk menambahkan
requirejs-config.js
file. Anda bisa menambahkannya di lokasi ini:app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Lihat jawaban ini untuk membuat
requirejs-config.js
file yang tepat .3) Anda harus membuat daftar dependensi file js Anda sebelum menulis skrip.
Kode di atas mengatakan bahwa Anda akan memerlukan jquery dan jquery ui untuk skrip Anda.
4) Anda tidak perlu menggunakan
define([
kecuali Anda membuat plugin javascript.5) Tidak, Anda tidak perlu mengeditnya tetapi Anda harus menentukan ketergantungannya menggunakan
requirejs-config.js
file. Jika Anda memilikiowl.carousel.min.js
di<vendor>/<theme>/web/js/owl.carousel.min.js
, Andarequirejs-config.js
file yang akan terlihat seperti ini:Dalam kode di atas, harap diingat bahwa tidak ada
.js
file. Dan sekarang menggunakannya di js AndaJika semuanya berfungsi dengan baik, Anda harus memiliki tautan footer di slider.
6) & 7) Cukup gunakan metode yang disarankan oleh @Goldy untuk menambahkan js Anda. Ini akan menambahkan file js Anda ke semua halaman.
Untuk bacaan lebih lanjut, Anda dapat melihat posting ini
Semoga ini membantu.
sumber
Ini adalah bagaimana saya menambahkan perpustakaan dotdotdot di tema khusus magento2 saya.
1. Unduh dan tambahkan Js Library di tema Anda mengikuti jalur:
2. Buat file requirejs tema sebagai follow dan biarkan requirejs tahu pustaka yang baru ditambahkan.
3. Gunakan perpustakaan yang ditambahkan di file js utama tema Anda sebagai berikut:
4. dan sertakan file js tema Anda di kepala situs Anda sebagai berikut:
Anda dapat menambahkan perpustakaan JS eksternal dan file khusus pada setiap halaman di magento2.
sumber