Pemuatan dinamik fungsi JS
Secara amnya, apabila kami perlu memuatkan fail js, kami akan menggunakan tag skrip, serupa dengan kod berikut:
1. Perintah bacaan yang ketat. Memandangkan penyemak imbas membaca fail Javascript dalam susunan yang mana 2. Penyemak imbas menggunakan "mod segerak" untuk memuatkan teg Pada masa ini kita akan memikirkan memuatkan JS secara dinamik Kaedah pelaksanaan memuatkan JS secara dinamik adalah serupa dengan kod berikut Ini tidak akan menyebabkan penyekatan halaman, tetapi ia akan menyebabkan masalah lain: fail Javascript yang dimuatkan dengan cara ini tidak berada dalam struktur DOM asal, jadi fungsi panggil balik dinyatakan dalam acara DOM-ready (DOMContentLoaded) dan window.onload peristiwa Tidak mempunyai kesan ke atasnya. Pada masa ini kami akan memikirkan untuk menggunakan beberapa perpustakaan fungsi luaran untuk menguruskan isu pemuatan JS dengan berkesan. Mari kita ke intinya dan bercakap tentang LAB.js LAB.js Jika kita menggunakan kaedah tradisional untuk memuatkan js, kod yang ditulis secara amnya adalah seperti yang ditunjukkan dalam kod di bawah. $LAB.setGlobalDefaults({ Nyahpepijat: benar }) //Hidupkan penyahpepijatan $LAB //Rantai pelaksanaan kedua //Rantai pelaksanaan ketiga //Rantai pelaksanaan keempat //Rantai pelaksanaan kelima //Rantai pelaksanaan keenam Pada masa ini buka konsol dan lihat maklumat, seperti yang ditunjukkan di bawah: Saya percaya anda akan kagum dengan fungsi penyahpepijatan Lab.js apabila anda melihatnya. Malah, Lab.js sememangnya agak berkuasa, dan saya hanya memahami beberapa fungsi ceteknya. Tulis dahulu dan kongsikan untuk kemudahan anda di masa hadapan.
/*
*@desc: Tambahkan skrip secara dinamik
*@param src: Alamat fail js yang dimuatkan
*@param panggil balik: Fungsi panggil balik yang perlu dipanggil selepas fail js dimuatkan
*@demo:
addDynamicStyle('http://webresource.c-ctrip.com/code/cquery/LABjs/LAB.js', fungsi () {
alert('lab.js pada pelayan Ctrip dimuatkan')
});
*/
fungsi addDynamicJS(src, panggil balik) {
var script = document.createElement("skrip");
script.setAttribute("type", "text/javascript");
script.src = src[i];
Script.charset = 'gb2312';
Document.body.appendChild(skrip);
Jika (panggilan balik != tidak ditentukan) {
script.onload = fungsi () {
panggil balik();
}
}
}
//Rantai pelaksanaan pertama
.skrip('http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js')
.skrip('http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js')
.tunggu(fungsi () {
//console.log(window.$)
//console.log(window._)
})
.skrip('http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/js/bootstrap.min.js')
.skrip('http://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.pack.js')
.tunggu(fungsi () {
// console.log(plugin1Function)
// console.log(plugin2Function)
})
.skrip('js/aaa.js')
.skrip('js/bbb.js')
.tunggu(fungsi () {
// console.log(modul1Fungsi)
// console.log(module2Function)
})