


Le chargement différé des images est également appelé chargement paresseux. Il est généralement appliqué aux pages Web contenant de nombreuses images et si la hauteur ou la largeur de la page est de plusieurs écrans, lorsque la page est chargée pour la première fois, seules les images. dans la zone visible sera affiché lorsque la page défile, l'image entre dans la zone visible avant d'être chargée. Cela peut améliorer considérablement la vitesse de chargement de la page, et moins de demandes d'images simultanées peuvent également réduire la pression sur le serveur. Si les utilisateurs restent uniquement sur le premier écran, ils peuvent également enregistrer des données. S'il y a beaucoup d'images dans TAB, cela peut également être appliqué à TAB, puis les images seront chargées lorsque TAB sera déclenché.
Le principe du chargement paresseux des images est relativement simple. Tout d'abord, mettez en cache l'adresse réelle de l'image dans un attribut personnalisé (lazy-src) et utilisez une image d'espace réservé 1×1 entièrement transparente pour l'adresse src. . Bien entendu, l’image d’espace réservé peut également être une autre image.

Étant donné que javascript est utilisé pour charger les images, si l'utilisateur a désactivé javascript, une alternative peut être configurée.

Lorsque la page est chargée pour la première fois, la position de l'image dans la page est obtenue et mise en cache (chaque fois que la valeur de décalage est prise déclenchera une redistribution de la page), la zone visible est calculée, et lorsque la position de l'image apparaît dans la zone visible, le src est La valeur est remplacée par l'adresse réelle et l'image commence à se charger.
Lorsque la page défile, il est alors déterminé si la valeur de position mise en cache de l'image apparaît dans la zone visible, et le src est chargé à la place. Lorsque toutes les images sont chargées, les événements déclencheurs correspondants sont déchargés pour éviter les fuites de mémoire causées par des opérations répétées. Considérez la fenêtre entière comme un grand conteneur, vous pouvez également configurer un petit conteneur dans la page et vous pouvez également implémenter un chargement différé des images dans le petit conteneur.
Ce qui suit est le code implémenté, que j'ai écrit en tant que plug-in jQuery.
(function( $ ){
$.fn.imglazyload = function( options ){
var o = $.extend({
attr : 'lazy-src',
container : window,
event : 'scroll',
fadeIn : false,
threshold : 0,
vertical : true
}, options ),
event = o.event,
vertical = o.vertical,
container = $( o.container ),
threshold = o.threshold,
// 将jQuery对象转换成DOM数组便于操作
elems = $.makeArray( $(this) ),
dataName = 'imglazyload_offset',
OFFSET = vertical ? 'top' : 'left',
SCROLL = vertical ? 'scrollTop' : 'scrollLeft',
winSize = vertical ? container.height() : container.width(),
scrollCoord = container[ SCROLL ](),
docSize = winSize + scrollCoord;
// 延迟加载的触发器
var trigger = {
init : function( coord ){
return coord >= scrollCoord &&
coord },
scroll : function( coord ){
var scrollCoord = container[ SCROLL ]();
return coord >= scrollCoord &&
coord },
resize : function( coord ){
var scrollCoord = container[ SCROLL ](),
winSize = vertical ?
container.height() :
container.width();
return coord >= scrollCoord &&
coord }
};
var loader = function( triggerElem, event ){
var i = 0,
isCustom = false,
isTrigger, coord, elem, $elem, lazySrc;
// 自定义事件只要触发即可,无需再判断
if( event ){
if( event !== 'scroll' && event !== 'resize' ){
isCustom = true;
}
}
else{
event = 'init';
}
for( ; i isTrigger = false;
elem = elems[i];
$elem = $( elem );
lazySrc = $elem.attr( o.attr );
if( !lazySrc || elem.src === lazySrc ){
continue;
}
// 先从缓存获取offset值,缓存中没有才获取计算值,
// 将计算值缓存,避免重复获取引起的reflow
coord = $elem.data( dataName );
if( coord === undefined ){
coord = $elem.offset()[ OFFSET ];
$elem.data( dataName, coord );
}
isTrigger = isCustom || trigger[ event ]( coord );
if( isTrigger ){
// 加载图片
elem.src = lazySrc;
if( o.fadeIn ){
$elem.hide().fadeIn();
}
// 移除缓存
$elem.removeData( dataName );
// 从DOM数组中移除该DOM
elems.splice( i--, 1 );
}
}
// Décharge l'événement déclencheur une fois toutes les images chargées
if( !elems.length ){
if( triggerElem ){
triggerElem.unbind( event, fire );
}
else{
containers.unbind( o.event, fire );
}
$( window ).unbind( 'resize', fire );
elems = null;
}
};
var fire = function( e ){
loader( $(this), e.type );
};
// Bind event
containers = event === 'scroll' ? containers : $( this );
containers.bind( event, fire );
$( window ).bind( 'resize', fire ) ;
// Initialisation
loader();
renvoie ceci ;
};
})( jQuery );
Appel :
$ ( 'img ' ).imglazyload({
event : 'scroll',
attr : 'lazy-src'
});
L'appel par défaut peut omettre tous les paramètres .
Description de l'API du plug-in pour le chargement paresseux des images :
attr string
Le nom de l'attribut qui stocke la véritable adresse de l'image, correspondant au HTML, et la valeur par défaut est lazy-src.
conteneur dom et sélecteur
Le conteneur par défaut est window et le conteneur peut être personnalisé.
event Stirng
Le type d'événement qui déclenche le chargement de l'image, la valeur par défaut est l'événement window.onscroll
fadeIn booléen
S'il faut utiliser l'effet fadeIn de jQuery pour afficher, la valeur par défaut est false.
numéro de seuil
La page sera chargée lorsqu'elle défilera jusqu'à la distance spécifiée par rapport à l'image. La valeur par défaut est 0.
booléen vertical
Que ce soit pour faire défiler horizontalement, la valeur par défaut est vraie (verticale).
loadScript (version améliorée de la fonction) booléen
Que ce soit pour charger des images publicitaires JavaScript sans blocage, la valeur par défaut est false.

Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

Les applications de JavaScript dans le monde réel incluent la programmation côté serveur, le développement des applications mobiles et le contrôle de l'Internet des objets: 1. La programmation côté serveur est réalisée via Node.js, adaptée au traitement de demande élevé simultané. 2. Le développement d'applications mobiles est effectué par le reactnatif et prend en charge le déploiement multiplateforme. 3. Utilisé pour le contrôle des périphériques IoT via la bibliothèque Johnny-Five, adapté à l'interaction matérielle.

J'ai construit une application SAAS multi-locataire fonctionnelle (une application EdTech) avec votre outil technologique quotidien et vous pouvez faire de même. Premièrement, qu'est-ce qu'une application SaaS multi-locataire? Les applications saas multi-locataires vous permettent de servir plusieurs clients à partir d'un chant

Cet article démontre l'intégration frontale avec un backend sécurisé par permis, construisant une application fonctionnelle EdTech SaaS en utilisant Next.js. Le frontend récupère les autorisations des utilisateurs pour contrôler la visibilité de l'interface utilisateur et garantit que les demandes d'API adhèrent à la base de rôles

JavaScript est le langage central du développement Web moderne et est largement utilisé pour sa diversité et sa flexibilité. 1) Développement frontal: construire des pages Web dynamiques et des applications à une seule page via les opérations DOM et les cadres modernes (tels que React, Vue.js, Angular). 2) Développement côté serveur: Node.js utilise un modèle d'E / S non bloquant pour gérer une concurrence élevée et des applications en temps réel. 3) Développement des applications mobiles et de bureau: le développement de la plate-forme multiplateuse est réalisé par réact noral et électron pour améliorer l'efficacité du développement.

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Python est plus adapté à la science des données et à l'apprentissage automatique, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche, et convient à l'analyse des données et au développement Web. 2. JavaScript est le cœur du développement frontal. Node.js prend en charge la programmation côté serveur et convient au développement complet.


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

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Version Mac de WebStorm
Outils de développement JavaScript utiles

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.