国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison interface Web js tutoriel Astuce rapide: comment parcourir les événements de défilement

Astuce rapide: comment parcourir les événements de défilement

Feb 17, 2025 am 10:07 AM

Quick Tip: How to Throttle Scroll Events

Points clés

  • L'écoute des événements de défilement peut provoquer une dégradation des performances car le navigateur exécute une fonction de rappel chaque fois que l'utilisateur défile; L'accélérateur assure un flux constant d'événements sur un intervalle de temps donné, tandis que le dé-bumping combine une série d'événements en un seul événement.
  • La mise en ?uvre de la limitation des événements en JavaScript peut être compliquée, et il est recommandé d'utiliser une implémentation tierce comme Lodash, qui est la norme pour la limitation des événements. La fonction de limitation de Lodash simplifie la limitation de l'événement à rouler et offre des options pour déterminer si la fonction de rappel est exécutée au bord avant et / ou arrière de l'événement.
  • La clé du choix de la limitation et du débouchement est de voir la nature du problème à résoudre. L'accélération s'applique aux événements qui se produisent dans un laps de temps donné, comme le défilement, tandis que le débouchement s'applique à des événements tels que des pressions de clés, où l'intervalle entre les événements n'est pas important.

Cet article a été examiné par Vildan Softic et Julian Motz. Merci à tous les évaluateurs de pairs SitePoint pour avoir obtenu le contenu de sitepoint à son meilleur!

L'un des dangers de l'écoute des événements de défilement est la dégradation des performances. Le navigateur exécute une fonction de rappel chaque fois que l'utilisateur défile, qui peut avoir de nombreux événements par seconde. Si la fonction de rappel effectue beaucoup d'opérations redessine, cela signifie de mauvaises nouvelles pour l'utilisateur final. Le redémarrage co?te cher, surtout lorsque vous redessiez la majeure partie de la vue, comme lorsqu'un événement de défilement se produit.

L'exemple suivant illustre ce problème:

Voir l'exemple sur Codepen: événements de défilement non lancées

En plus de la dégradation des performances et sujette aux crises. Cet exemple illustre ce qui se passe lorsque l'ordinateur suit exactement vos instructions. Il n'y a pas de transition lisse entre les couleurs d'arrière-plan, l'écran clignote. Tout programmeur malheureux peut penser qu'il n'y a aucun espoir dans ce monde. N'y a-t-il pas de meilleur moyen?

événements standard

Une solution consiste à reporter les événements et à gérer plusieurs événements à la fois. Il existe deux fonctions couramment utilisées qui peuvent nous aider à faire cela: la limitation et le débouchement.

La confiance garantit un flux constant d'événements sur un intervalle de temps donné, tandis que le dés-bumping combine une série d'événements en un seul événement. Une fa?on de penser est que la limitation est basée sur le temps, tandis que Debounce est basé sur l'événement. L'accélération est garantie pour être exécutée, tandis que De-Jitter n'est pas garantie d'être exécutée après la fin du paquet. Si vous voulez en savoir plus à ce sujet, veuillez consulter cette discussion approfondie sur le déshumage et la limitation.

dé-shaking

Debounce résout différents problèmes, tels que les boutons avec Ajax. Pourquoi envoyer une demande pour chaque pression lorsque vous tapez quelque chose sous un formulaire? Une solution plus élégante consiste à combiner une série de clés en un événement qui déclenchera une demande Ajax. Cela est conforme au processus naturel de saisie et enregistre les ressources du serveur. Pour les pressions de touches, l'intervalle entre les événements n'est pas important car l'utilisateur ne tape pas à un rythme constant.

Trust

Comme il n'y a aucune garantie de débouchement, une autre méthode consiste à étrangler l'événement roulant. Le défilement se produit dans un laps de temps donné, il convient donc de parcourir. Une fois que l'utilisateur a commencé à faire défiler, nous voulons assurer une exécution opportune.

Cette technique aide à vérifier si nous sommes situés dans une partie spécifique de la page. Compte tenu de la taille de la page, il faut de nombreuses secondes pour faire défiler le contenu. Cela permet à la limitation de déclencher des événements une seule fois dans un intervalle donné. La limitation des événements rendra l'expérience de défilement plus fluide et assurera l'exécution.

Ce qui suit est un accélérateur d'événements simples écrit en javascript natif:

function throttle(fn, wait) {
  var time = Date.now();
  return function() {
    if ((time + wait - Date.now()) < 0) {
      fn();
      time = Date.now();
    }
  }
}

Cette implémentation définit une variable de temps qui suit le moment où la fonction est appelée pour la première fois. Chaque fois que la fonction retournée est appelée, il vérifie si l'intervalle d'attente s'est écoulé, et si oui, il déclenche le rappel et réinitialise l'heure.

Affichez l'exemple sur Codepen: implémentation native de la limitation JS

Bibliothèque d'utilisateurs

Il y a beaucoup de dangers dans la limitation des événements, et il n'est pas recommandé de l'écrire vous-même. Plut?t que d'écrire votre propre implémentation, je vous recommande d'utiliser une implémentation tierce.

lodash

Lodash est la norme de facto pour la limitation des événements en javascript. Cette bibliothèque est open source afin que vous puissiez parcourir le code comme vous le souhaitez. L'avantage est que la bibliothèque est modulaire, vous pouvez donc en obtenir ce que vous en voulez.

En utilisant la fonction de limitation de Lodash, la limitation des événements de roulement devient simple:

window.addEventListener('scroll', _.throttle(callback, 1000));

Cela limite le torrent d'événement roulant entrant à une fois tous les 1000 millisecondes (une seconde).

L'API

offre des options frontales et arrière comme suit:

_.throttle(callback, 1, { trailing: true, leading: true });

Ces options déterminent si la fonction de rappel est exécutée à l'avant et / ou au bord arrière de l'événement.

Un problème ici est que si vous définissez à la fois le front et le bord arrière sur False, la fonction de rappel ne se déclenche pas. La définition du bord avant sur true démarrera immédiatement l'exécution de rappel, puis la limite. Cela garantit l'exécution pour chaque intervalle lorsque vous définissez les bords avant et tra?nants sur true.

Affichez la démo sur Codepen: événement de roulement de gaz

En regardant le code source, j'ai trouvé intéressant que Throttle () soit juste un wrapper pour Debounce (). L'accélérateur passe simplement un ensemble différent de paramètres pour modifier le comportement souhaité. Licette définit un maxwait, qui garantira l'exécution une fois que vous attendez aussi longtemps. Le reste de la mise en ?uvre reste le même.

J'espère que vous trouverez Lodash bon pour vous dans votre prochain événement Adventure Glancing!

Conclusion

La clé de l'exécution et du débouchement est de vérifier la nature du problème à résoudre. Ces deux technologies conviennent à différents cas d'utilisation. Je suggère de regarder la question du point de vue de l'utilisateur pour trouver la réponse.

L'avantage de l'utilisation de Lodash est qu'il résume beaucoup de complexité dans une API simple. La bonne nouvelle est que vous pouvez utiliser _.throttle() dans votre projet sans ajouter toute la bibliothèque. Il y a Lodash-CLI, un outil qui vous permet de créer uniquement des versions personnalisées contenant les fonctions requises. La limitation de l'événement n'est qu'une petite partie de toute la bibliothèque.

FAQ sur les événements roulants (FAQ)

  • Quel est le but de la limitation des événements roulants en JavaScript?

Trust Rolling Events in JavaScript est une technologie utilisée pour optimiser les performances d'un site Web ou d'une application Web. Lorsqu'un utilisateur défile sur une page Web, le navigateur génère un événement de défilement pour le mouvement de chaque pixel. Cela peut entra?ner des centaines ou même des milliers d'événements générés par seconde, ce qui peut dégrader sévèrement les performances de la page Web. En organisant ces événements, nous pouvons limiter le nombre d'événements à traiter, améliorant ainsi les performances et la réactivité de la page Web.

  • Comment fonctionne la limitation en JavaScript?

La confiance dans JavaScript fonctionne en définissant un retard entre les exécutions d'événements. Lorsqu'un événement est déclenché, la minuterie démarre. Si un autre événement est déclenché avant la fin de la minuterie, l'événement est ignoré. Cela garantit qu'un certain temps doit passer avant le traitement d'un autre événement. Cette technique est particulièrement utile pour les événements fréquemment déclenchés tels que les événements de défilement.

  • Quelle est la différence entre l'exécution et la décalage?

La confiance et le débouchement sont des techniques utilisées pour limiter le nombre de fois qu'une fonction peut être exécutée au fil du temps. La principale différence entre les deux est la fa?on dont ils gèrent la latence. L'accélérateur garantit que la fonction n'est pas appelée plus d'une fois chaque x milliseconde, tandis que le débouchement garantit que la fonction n'est pas appelée jusqu'à ce que X millisecondes se soient écoulées depuis le dernier appel. En d'autres termes, Throttling exécute la fonction à intervalles réguliers, tandis que Debounce exécute la fonction après une période d'inactivité.

  • Comment puis-je réaliser la limitation en JavaScript?

La fonction setTimeout peut être utilisée pour étouffer en JavaScript. Cette fonction vous permet de retarder l'exécution de la fonction par un nombre spécifié de millisecondes. En utilisant setTimeout avec les auditeurs d'événements, vous pouvez vous assurer que la fonction du gestionnaire d'événements n'est pas appelée plus d'une fois tous les x millisecondes.

  • Puis-je utiliser la limite avec d'autres événements en plus des événements de défilement?

Oui, la limitation peut être utilisée avec tout type d'événement en JavaScript, pas seulement les événements de défilement. Il est particulièrement utile pour les événements qui déclenchent ou nécessitent souvent un traitement étendu, tels que les événements de mouvement de souris, le redimensionnement des événements et les événements de presse de clés.

  • Y a-t-il une bibliothèque ou un cadre qui fournit une prise en charge intégrée pour l'exécution?

Oui, il existe plusieurs bibliothèques et frameworks qui fournissent une prise en charge intégrée pour l'exécution. Par exemple, la populaire bibliothèque de services publics JavaScript Lodash offre une fonction d'étranglement qui facilite la mise en ?uvre de la limitation. De même, la populaire bibliothèque JavaScript JQuery fournit également une fonction d'étranglement dans son API.

  • Quels sont les inconvénients potentiels de la limitation?

Bien que la limitation peut améliorer les performances d'une page Web, elle peut également conduire à une réponse à l'expérience utilisateur ralentie si elle est mal utilisée. Par exemple, si le retard est réglé trop élevé, les utilisateurs peuvent remarquer un décalage entre leurs opérations et la réponse de la page Web. Par conséquent, il est important de trouver un équilibre entre les performances et la vitesse de réponse lors de l'utilisation de la limitation.

  • Comment tester l'efficacité de la limitation?

Vous pouvez tester l'efficacité de la limitation en mesurant les performances de la page Web avant et après la limitation. Cela peut être fait à l'aide d'outils de développeur de navigateur, qui fournit des informations détaillées sur les performances de la page Web, y compris le temps nécessaire pour traiter les événements.

  • peut-il être utilisé en combinaison avec d'autres techniques d'optimisation des performances?

Oui, la limitation peut être utilisée en combinaison avec d'autres techniques d'optimisation des performances telles que Debounce et requestAnimationFrame. En combinant ces technologies, vous pouvez encore améliorer les performances et la réactivité de vos pages Web.

  • Y a-t-il une alternative à la limitation?

Oui, il existe plusieurs alternatives à la limitation, notamment le débouchement et requestAnimationFrame. Le débouchement est similaire à la limitation, mais au lieu de limiter le nombre de fois où une fonction peut être appelée au fil du temps, il garantit que la fonction ne sera pas appelée tant qu'un certain temps ne sera pas passé depuis le dernier appel. requestAnimationFrame est une méthode qui indique au navigateur d'exécuter une animation et demande au navigateur d'appeler une fonction spécifiée pour mettre à jour l'animation avant la prochaine repeinte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Comment faire une demande HTTP dans Node.js? Comment faire une demande HTTP dans Node.js? Jul 13, 2025 am 02:18 AM

Il existe trois fa?ons courantes d'initier des demandes HTTP dans Node.js: utilisez des modules intégrés, Axios et Node-Fetch. 1. Utilisez le module HTTP / HTTPS intégré sans dépendances, ce qui convient aux scénarios de base, mais nécessite un traitement manuel de la couture des données et de la surveillance des erreurs, tels que l'utilisation de https.get () pour obtenir des données ou envoyer des demandes de post via .write (); 2.AXIOS est une bibliothèque tierce basée sur la promesse. Il a une syntaxe concise et des fonctions puissantes, prend en charge l'async / attendre, la conversion JSON automatique, l'intercepteur, etc. Il est recommandé de simplifier les opérations de demande asynchrones; 3.Node-Fetch fournit un style similaire à la récupération du navigateur, basé sur la promesse et la syntaxe simple

Types de données JavaScript: référence primitive vs Types de données JavaScript: référence primitive vs Jul 13, 2025 am 02:43 AM

Les types de données JavaScript sont divisés en types primitifs et types de référence. Les types primitifs incluent la cha?ne, le nombre, le booléen, le nul, un non défini et le symbole. Les valeurs sont immuables et les copies sont copiées lors de l'attribution des valeurs, de sorte qu'elles ne se affectent pas; Les types de référence tels que les objets, les tableaux et les fonctions stockent les adresses de mémoire, et les variables pointant vers le même objet s'afferchent mutuellement. Le typeof et l'instance de OFF peuvent être utilisés pour déterminer les types, mais prêtent attention aux problèmes historiques de typeofnull. Comprendre ces deux types de différences peut aider à écrire un code plus stable et fiable.

Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Objet JavaScript Time, quelqu'un construit un site Web Eactexe, plus rapide sur Google Chrome, etc. Jul 08, 2025 pm 02:27 PM

Bonjour, développeurs JavaScript! Bienvenue dans JavaScript News de cette semaine! Cette semaine, nous nous concentrerons sur: le différend de marque d'Oracle avec Deno, les nouveaux objets Time JavaScript sont pris en charge par les navigateurs, les mises à jour Google Chrome et certains outils de développeurs puissants. Commen?ons! Le différend de marque d'Oracle avec la tentative de Deno Oracle d'enregistrer une marque "JavaScript" a provoqué la controverse. Ryan Dahl, le créateur de Node.js et Deno, a déposé une pétition pour annuler la marque, et il pense que JavaScript est un niveau ouvert et ne devrait pas être utilisé par Oracle

Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Gestion des promesses: cha?nage, gestion des erreurs et combinateurs de promesses en javascript Jul 08, 2025 am 02:40 AM

La promesse est le mécanisme central pour gérer les opérations asynchrones en JavaScript. Comprendre les appels de cha?ne, la gestion des erreurs et les combinants est la clé pour ma?triser leurs applications. 1. L'appel de la cha?ne renvoie une nouvelle promesse à travers. Puis () pour réaliser la concaténation des processus asynchrones. Chaque .then () re?oit le résultat précédent et peut renvoyer une valeur ou une promesse; 2. La gestion des erreurs doit utiliser .catch () pour attraper des exceptions pour éviter les défaillances silencieuses, et peut renvoyer la valeur par défaut dans Catch pour continuer le processus; 3. Combinateurs tels que promesse.all () (réussi avec succès uniquement après tout succès), promesse.race () (le premier achèvement est retourné) et promesse.allsetTled () (en attente de toutes les achèvements)

Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Qu'est-ce que l'API Cache et comment est-elle utilisée avec les travailleurs du service? Jul 08, 2025 am 02:43 AM

Cacheapi est un outil fourni par le navigateur pour mettre en cache les demandes de réseau, qui est souvent utilisée en conjonction avec travailleur de service pour améliorer les performances du site Web et l'expérience hors ligne. 1. Il permet aux développeurs de stocker manuellement des ressources telles que des scripts, des feuilles de style, des photos, etc.; 2. Il peut faire correspondre les réponses du cache en fonction des demandes; 3. Il prend en charge la suppression des caches spécifiques ou la nettoyage du cache entier; 4. Il peut mettre en ?uvre des stratégies de priorité de cache ou de priorité de réseau grace à l'écoute des événements Fetch; 5. Il est souvent utilisé pour le support hors ligne, accélérez la vitesse d'accès répétée, préchargement des ressources clés et du contenu de mise à jour des antécédents; 6. Lorsque vous l'utilisez, vous devez faire attention au contr?le de la version du cache, aux restrictions de stockage et à la différence entre le mécanisme de mise en cache HTTP.

JS Roundup: une plongée profonde dans la boucle d'événement JavaScript JS Roundup: une plongée profonde dans la boucle d'événement JavaScript Jul 08, 2025 am 02:24 AM

La boucle d'événement de JavaScript gère les opérations asynchrones en coordonnant les piles d'appels, les webapis et les files d'attente de taches. 1. La pile d'appels exécute du code synchrone, et lors de la rencontre de taches asynchrones, il est remis à WebAPI pour le traitement; 2. Une fois que le WebAPI a terminé la tache en arrière-plan, il met le rappel dans la file d'attente correspondante (macro tache ou micro tache); 3. La boucle d'événement vérifie si la pile d'appels est vide. S'il est vide, le rappel est retiré de la file d'attente et poussé dans la pile d'appels pour l'exécution; 4. Micro taches (comme Promise. puis) ??prendre la priorité sur les taches macro (telles que Settimeout); 5. Comprendre la boucle d'événements permet d'éviter de bloquer le thread principal et d'optimiser l'ordre d'exécution du code.

Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Comprendre l'événement bouillonnant et capturer dans les événements JavaScript DOM Jul 08, 2025 am 02:36 AM

Les bulles d'événements se propagent de l'élément cible vers l'extérieur vers le n?ud d'ancêtre, tandis que la capture d'événements se propage de la couche externe vers l'intérieur vers l'élément cible. 1. événements Bubbles: Après avoir cliqué sur l'élément enfant, l'événement déclenche l'auditeur de l'élément parent vers le haut. Par exemple, après avoir cliqué sur le bouton, il sortira d'abord cliqué sur l'enfant, puis parent. 2. Capture d'événement: définissez le troisième paramètre sur true, afin que l'auditeur soit exécuté dans l'étape de capture, tels que le déclenchement de l'écouteur de capture de l'élément parent avant de cliquer sur le bouton. 3. Les utilisations pratiques incluent la gestion unifiée des événements d'éléments enfants, le prétraitement d'interception et l'optimisation des performances. 4. Le flux d'événements DOM est divisé en trois étapes: capture, cible et bulle, et l'écouteur par défaut est exécuté dans l'étape de la bulle.

Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Un tour d'horizon des fonctions d'ordre supérieur au-delà de la carte et du filtre Jul 10, 2025 am 11:41 AM

Dans les tableaux JavaScript, en plus de la carte et du filtre, il existe d'autres méthodes puissantes et rarement utilisées. 1. La réduction peut non seulement résumer, mais également compter, se regrouper, aplatir les tableaux et construire de nouvelles structures; 2. Find et FindIndex sont utilisés pour trouver des éléments ou des index individuels; 3.Il et tout sont utilisés pour déterminer si les conditions existent ou que toutes les personnes se rencontrent; 4.Sort peut être trié mais changera le tableau d'origine; 5. Faites attention à la copie du tableau lorsque vous l'utilisez pour éviter les effets secondaires. Ces méthodes rendent le code plus concis et efficace.

See all articles