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);
});

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Python implémente les fonctions de chargement dynamique et de traitement des requêtes asynchrones des applications de collecte de navigateurs sans tête. Dans les robots d'exploration Web, il est parfois nécessaire de collecter le contenu de la page qui utilise le chargement dynamique ou les requêtes asynchrones. Les outils de robots d'exploration traditionnels présentent certaines limitations dans le traitement de ces pages et ne peuvent pas obtenir avec précision le contenu généré par JavaScript sur la page. L'utilisation d'un navigateur sans tête peut résoudre ce problème. Cet article explique comment utiliser Python pour implémenter un navigateur sans tête afin de collecter le contenu des pages à l'aide du chargement dynamique et des requêtes asynchrones.

Gestion du chargement et du changement dynamiques de composants dans Vue Vue est un framework JavaScript populaire qui fournit une variété de fonctions flexibles pour gérer le chargement et le changement dynamiques de composants. Dans cet article, nous discuterons de certaines méthodes de gestion du chargement et de la commutation dynamiques des composants dans Vue et fournirons des exemples de code spécifiques. Le chargement dynamique de composants signifie le chargement dynamique de composants au moment de l'exécution, selon les besoins. Cela améliore les performances et la vitesse de chargement de votre application car les composants pertinents ne sont chargés qu'en cas de besoin. Vue fournit async et awa

Explorer le principe de Golang Hot Update : Le mystère du chargement et du rechargement dynamiques Introduction : Dans le domaine du développement logiciel, les programmeurs espèrent souvent pouvoir modifier et mettre à jour le code sans redémarrer l'application. De telles exigences sont d’une grande importance tant pour l’efficacité du développement que pour la fiabilité du fonctionnement du système. En tant que langage de programmation moderne, Golang fournit aux développeurs de nombreux mécanismes pratiques pour implémenter des mises à jour à chaud. Cet article approfondira les principes de la mise à jour à chaud de Golang, en particulier les mystères du chargement et du rechargement dynamiques, et le combinera avec des exemples de code spécifiques.

Comment utiliser Vue et Element-UI pour créer une table qui charge dynamiquement des données dans le développement Web moderne, les tables de données sont l'un des composants d'interface courants. Vue.js est un framework frontal très populaire de nos jours, et Element-UI est un ensemble de bibliothèques de composants développées sur la base de Vue.js, qui fournit un riche ensemble de composants d'interface utilisateur que nous pouvons utiliser. Cet article expliquera comment utiliser Vue et Element-UI pour créer une table capable de charger dynamiquement des données et donnera des exemples de code correspondants. Tout d'abord, nous devons installer

Résoudre l'erreur Vue : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Lors du processus d'utilisation de VueRouter pour les sauts de routage, nous devons parfois charger dynamiquement des composants en fonction des paramètres de routage. Cependant, dans certains cas, nous pouvons rencontrer une erreur courante : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Cet article décrit comment résoudre cette erreur et fournit des exemples de code. Tout d’abord, nous devons être clairs : VueRouter peut passer

Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Introduction : En C#, la réflexion (Reflection) est un mécanisme puissant qui nous permet d'obtenir et d'exploiter les métadonnées du programme au moment de l'exécution, y compris les informations de type, les informations sur les membres, etc. Le chargement dynamique d'assemblys est une application courante implémentée par réflexion et s'avère très utile dans certains scénarios spécifiques. Cet article présentera en détail comment utiliser la réflexion et charger dynamiquement des assemblys en C#, et fournira des exemples de code spécifiques. Le concept de base de la réflexion La réflexion est une fonction importante du langage C#

Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Lors de l'exploration des données d'une page Web, nous rencontrons souvent le problème selon lequel le contenu chargé dynamiquement ne peut pas être obtenu directement via le robot d'exploration. Ces contenus chargés dynamiquement peuvent être des données obtenues via des requêtes AJAX, des éléments DOM rendus via JavaScript, etc. Afin de résoudre ce problème, cet article présentera quelques conseils pratiques pour gérer les problèmes de chargement dynamique des pages Web lors de l'utilisation de phpSpider. 1. Utilisez les outils de débogage réseau pour rechercher des URL chargées dynamiquement

Java utilise la méthode load() de la classe System pour charger dynamiquement des classes ou des ressources. Dans le développement Java, nous devons parfois charger dynamiquement des classes ou des ressources pendant l'exécution du programme pour obtenir certaines fonctions flexibles. Java fournit la méthode load() de la classe System pour répondre à cette exigence. Cet article présentera l'utilisation de la méthode load() de la classe System et fournira des exemples de code correspondants. Tout d’abord, comprenons la définition de la méthode load() : publicstaticvo
