javascript开发随笔二 动态加载js和文件_javascript技巧
这时候最好的做法就是按需引入,动态引入组件js和样式,文件load完成后调用callback,运行js。代码还是很简便的
1. 判断文件load完成。加载状态ie为onreadystatechange,其他为onload、onerror
if(isie){
Res.onreadystatechange = function(){
if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
Res.onreadystatechange = null;
callback();
_self.loadedUi[modelName] = true;
}
}
}else{
Res.onload = function(){
Res.onload = null;
callback();
_self.loadedUi[modelName] = true;
}
Res.onerror = function(){
throw new Error('res error:' + modelName+'.js');
}
}
2. 所有组件的命名最好保持一致,callback调用也比较方便。还可以根据需要增加参数比如: requires,依赖于那些文件;style,true || false,是否加载样式,等等。
3. 移除操作也可以有,移除script、style标签、delete组件
(function(window,undefined){
if(!window.ui) {
window.ui = {};
}
//动态加载ui的js
window.bus = {
config : {
version : window.config.version,
cssPath : window.config.resServer + '/css/v3/ui',
jsPath : window.config.resServer + '/js/v2/ui'
},
loadedUi : {},
readyStateChange : function(){
var ua = navigator.userAgent.toLowerCase();
return ua.indexOf('msie') >= 0;
},
loadRes : function(modelName,prames,callback){
var _self = this;
var Res = document.createElement(prames.tagName);
for(var k in prames){
if(k != 'tagName'){
Res.setAttribute(k,prames[k],0);
}
}
document.getElementsByTagName('head')[0].appendChild(Res);
if(this.readyStateChange()){
Res.onreadystatechange = function(){
if(Res.readyState == 'complete' || Res.readyState == 'loaded'){
Res.onreadystatechange = null;
callback();
_self.loadedUi[modelName] = true;
}
}
}else{
Res.onload = function(){
Res.onload = null;
callback();
_self.loadedUi[modelName] = true;
}
Res.onerror = function(){
throw new Error('res error:' + modelName+'.js');
}
}
},
removeUi : function(modelName){
if(!modelName){
return true
};
this.loadedUi[modelName] = false;
var head = document.getElementsByTagName('head')[0];
var model_js = document.getElementById('J_model_'+modelName + '_js');
var model_css = document.getElementById('J_model_'+modelName + '_css');
if(model_js && model_css){
delete window.ui[modelName];
head.removeChild(model_js);
head.removeChild(model_css);
return true;
}else{
return false;
}
},
loadUi : function(modelName,callback,setting){
if(!modelName){
return true
};
callback = callback || function(){};
if(this.loadedUi[modelName] == true){
callback();
return true
}
var deafult_setting = {
style : true,
js : true,
requires : []
}
for(var key in setting){
deafult_setting[key] = setting[key];
}
deafult_setting['style'] === true && this.loadRes(modelName,{
id : 'J_model_'+modelName + '_css',
name : modelName,
tagName : 'link',
type : 'text/css',
rel : 'stylesheet',
href : this.config.cssPath + '/' + modelName + '.css?v=' + this.config.version
});
deafult_setting['js'] === true && this.loadRes(modelName,{
id : 'J_model_'+modelName + '_js',
name : modelName,
tagName : 'script',
type : 'text/javascript',
src : this.config.jsPath + '/' + modelName + '.js?v=' + this.config.version
},callback);
if(deafult_setting.requires.length > 0){
for(var i=0,len = deafult_setting.requires.length;i
}
}
}
}
})(window)
使用方法
// load comment for feed
window.bus.loadUi('new_comment_feed', function(){
window.ui.new_comment_feed($("#J_newsList"));
},{
style : false,
requires:['emoticon','addFriend']
});
// load new yy ui
window.bus.loadUi('yy', function(){
window.ui.yy(options);
},{
style:false,
requires:['emoticon']
});
// load photoLightbox
window.bus.loadUi('photoLightbox', function(){
window.ui.photoLightbox(options.urlAjaxGetFriendPhoto, options.urlCommentOtherPhoto,$("#J_newsList"),options.myUid,options.myName);
});

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Python implementiert die dynamischen Lade- und asynchronen Anforderungsverarbeitungsfunktionen von Headless-Browser-Sammelanwendungen. In Webcrawlern ist es manchmal erforderlich, Seiteninhalte zu sammeln, die dynamisches Laden oder asynchrone Anforderungen verwenden. Herkömmliche Crawler-Tools weisen bestimmte Einschränkungen bei der Verarbeitung solcher Seiten auf und können den von JavaScript auf der Seite generierten Inhalt nicht genau abrufen. Die Verwendung eines Headless-Browsers kann dieses Problem lösen. In diesem Artikel wird erläutert, wie Sie mit Python einen Headless-Browser implementieren, um Seiteninhalte mithilfe dynamischen Ladens und asynchroner Anforderungen zu sammeln.

Umgang mit dem dynamischen Laden und Wechseln von Komponenten in Vue Vue ist ein beliebtes JavaScript-Framework, das eine Vielzahl flexibler Funktionen zum Umgang mit dem dynamischen Laden und Wechseln von Komponenten bereitstellt. In diesem Artikel besprechen wir einige Methoden zur Handhabung des dynamischen Ladens und Wechselns von Komponenten in Vue und stellen spezifische Codebeispiele bereit. Das dynamische Laden von Komponenten bedeutet das dynamische Laden von Komponenten zur Laufzeit nach Bedarf. Dies verbessert die Leistung und Ladegeschwindigkeit Ihrer Anwendung, da relevante Komponenten nur bei Bedarf geladen werden. Vue bietet Async und AWA

Erkundung des Prinzips von Golang Hot Update: Das Geheimnis des dynamischen Ladens und Neuladens Einführung: Im Bereich der Softwareentwicklung hoffen Programmierer oft, Code ändern und aktualisieren zu können, ohne die Anwendung neu starten zu müssen. Solche Anforderungen sind sowohl für die Entwicklungseffizienz als auch für die Zuverlässigkeit des Systembetriebs von großer Bedeutung. Als moderne Programmiersprache bietet Golang Entwicklern viele praktische Mechanismen zur Implementierung von Hot Updates. Dieser Artikel befasst sich mit den Prinzipien des Golang-Hot-Updates, insbesondere mit den Geheimnissen des dynamischen Ladens und Neuladens, und kombiniert ihn mit spezifischen Codebeispielen.

So erstellen Sie mit Vue und Element-UI eine Tabelle, die Daten dynamisch lädt. In der modernen Webentwicklung sind Datentabellen eine der häufigsten Schnittstellenkomponenten. Vue.js ist heutzutage ein sehr beliebtes Front-End-Framework, und Element-UI ist eine Reihe von Komponentenbibliotheken, die auf Basis von Vue.js entwickelt wurden und uns einen umfangreichen Satz an UI-Komponenten zur Verfügung stellen. In diesem Artikel wird erläutert, wie Sie mit Vue und Element-UI eine Tabelle erstellen, die Daten dynamisch laden kann, und entsprechende Codebeispiele geben. Zuerst müssen wir installieren

Beheben Sie den Vue-Fehler: VueRouter kann nicht korrekt zum dynamischen Laden von Komponenten basierend auf Routing-Parametern verwendet werden. Bei der Verwendung von VueRouter für Routing-Sprünge müssen wir manchmal Komponenten basierend auf Routing-Parametern dynamisch laden. In einigen Fällen kann jedoch ein häufiger Fehler auftreten: VueRouter kann nicht korrekt verwendet werden, um Komponenten basierend auf Routing-Parametern dynamisch zu laden. In diesem Artikel wird beschrieben, wie Sie diesen Fehler beheben können, und es werden Codebeispiele bereitgestellt. Zunächst müssen wir klarstellen: VueRouter kann bestehen

Verwendung von Reflektion und dynamisches Laden von Assemblys in C# Einführung: In C# ist Reflektion (Reflection) ein leistungsstarker Mechanismus, der es uns ermöglicht, die Metadaten des Programms zur Laufzeit abzurufen und zu verarbeiten, einschließlich Typinformationen, Mitgliedsinformationen usw. Das dynamische Laden von Assemblys ist eine häufige Anwendung, die durch Reflektion implementiert wird, und ist in einigen spezifischen Szenarien sehr nützlich. In diesem Artikel wird die Verwendung von Reflektion und das dynamische Laden von Assemblys in C# im Detail vorgestellt und spezifische Codebeispiele bereitgestellt. Das Grundkonzept der Reflexion Reflexion ist eine wichtige Funktion in der Sprache C#

phpSpider-Praxistipps: Wie gehe ich mit dem dynamischen Laden von Webinhalten um? Beim Crawlen von Webseitendaten stoßen wir häufig auf das Problem, dass dynamisch geladene Inhalte nicht direkt über den Crawler abgerufen werden können. Bei diesen dynamisch geladenen Inhalten kann es sich um über AJAX-Anfragen erhaltene Daten, über JavaScript gerenderte DOM-Elemente usw. handeln. Um dieses Problem zu lösen, werden in diesem Artikel einige praktische Tipps zum Umgang mit dynamischen Ladeproblemen von Webseiten bei Verwendung von phpSpider vorgestellt. 1. Verwenden Sie Netzwerk-Debugging-Tools, um dynamisch geladene URLs zu finden

Verwenden Sie die Methode „load()“ der Systemklasse in Java, um Klassen oder Ressourcen dynamisch zu laden. In der Java-Entwicklung müssen wir manchmal Klassen oder Ressourcen dynamisch laden, während das Programm ausgeführt wird, um einige flexible Funktionen zu erreichen. Um diese Anforderung zu erfüllen, stellt Java die Methode „load()“ der Klasse „System“ bereit. In diesem Artikel wird die Verwendung der Methode „load()“ der Klasse „System“ vorgestellt und entsprechende Codebeispiele bereitgestellt. Lassen Sie uns zunächst die Definition der Methode „load()“ verstehen: publicstaticvo
