Maison > interface Web > Voir.js > Comment implémenter des composants d'image à chargement paresseux dans Vue ?

Comment implémenter des composants d'image à chargement paresseux dans Vue ?

王林
Libérer: 2023-06-25 10:58:36
original
959 Les gens l'ont consulté

Vue est un framework frontal populaire qui fournit de nombreuses fonctionnalités et composants puissants, y compris des composants d'image. Lors du développement Web, le chargement d'un grand nombre d'images peut entraîner un ralentissement du site Web. Afin de réduire cette pression, nous pouvons implémenter le composant image de manière simulée par un chargement paresseux afin que le site Web puisse se charger et être présenté aux utilisateurs plus rapidement.

Dans cet article, nous allons apprendre à utiliser Vue pour implémenter un composant d'image à chargement différé, qui comprend les étapes suivantes :

  1. Créer un composant d'image de base
  2. Ajouter une fonction de chargement différé
  3. Test et optimisation

Ensuite, nous vous expliquerons étape par étape.

  1. Créer un composant d'image de base

Tout d'abord, nous devons créer un composant d'image de base afin de pouvoir ajouter plus de fonctions dans les étapes suivantes. Vous pouvez utiliser l'outil de ligne de commande Vue CLI pour créer un projet Vue de base et y ajouter un composant image. Dans ce composant, nous pouvons utiliser la directive intégrée de Vue, v-bind, pour lier l'attribut src de l'image et définir un texte alternatif par défaut.

Exemple de code :

<template>
  <img v-bind:src="src" alt="Image">
</template>

<script>
export default {
  name: "ImageComponent",
  props: {
    src: {
      type: String,
      required: true,
    },
  },
};
</script>
Copier après la connexion

Ensuite, nous pouvons utiliser ce composant pour charger nos ressources d'image.

  1. Ajouter la fonction d'imitation de chargement paresseux

Ensuite, nous utiliserons les fonctionnalités de Vue pour ajouter la fonction d'imitation de chargement paresseux. Lorsque le site Web est initialisé, il suffit de charger le contenu de l'image de la partie visible de la page, et les autres contenus seront chargés lorsque l'utilisateur fera défiler la page. Pour ce faire, nous devons utiliser l'instruction intégrée de Vue v-once pour charger l'image afin de garantir que chaque composant ne sera rendu qu'une seule fois. Nous utiliserons ensuite la fonction de cycle de vie de Vue montée pour vérifier si le composant se trouve dans la zone visible et agirons en conséquence.

Dans cet exemple, nous utiliserons l'API Intersection Observer pour détecter si l'élément se trouve dans la zone visible. Si l'élément est dans la zone visible, nous chargeons l'image. Si l'élément ne se trouve pas dans la zone visible, aucune action n'est entreprise. Vous trouverez ci-dessous une implémentation simple.

Exemple de code :

<template>
  <div ref="imageWrapper">
    <img v-bind:src="src" alt="Image" v-once>
  </div>
</template>

<script>
export default {
  name: "ImageComponent",
  props: {
    src: {
      type: String,
      required: true,
    },
  },
  mounted() {
    const observer = new IntersectionObserver(
      ([entry]) => {
        if (entry.isIntersecting) {
          this.$refs.imageWrapper.classList.add('loaded');
          observer.disconnect();
        }
      },
      {
        rootMargin: "50px 0px",
      }
    );
    observer.observe(this.$refs.imageWrapper);
  },
};
</script>

<style>
  .loaded img {
    opacity: 1;
    transition: opacity 0.5s ease-in;
  }

  img {
    opacity: 0;
  }
</style>
Copier après la connexion

Dans cette implémentation, nous plaçons le composant image dans un élément div avec un attribut ref et ajoutons une classe nommée chargée à cet élément. Dans la fonction lifehook montée, nous utilisons l'API IntersectionObserver pour détecter si l'élément div se trouve dans la zone visible. Si l'élément se trouve dans la zone visible, nous ajouterons une classe nommée chargée à l'élément div, qui contient un attribut d'opacité qui augmente la transparence de l'image de 0 à 1. En ajoutant cette classe, nous pouvons utiliser les effets de transition CSS pour implémenter le processus de chargement en dégradé des images.

  1. Tests et optimisation

À ce stade, nous avons implémenté avec succès un composant d'image à chargement paresseux. Maintenant, nous pouvons utiliser ce composant dans notre projet Vue pour charger nos ressources d'image. Cependant, afin d’obtenir de meilleures performances du site Web, nous avons encore besoin de tests et d’optimisations supplémentaires.

Pour tester les performances des composants, nous pouvons utiliser des outils de développement pour simuler une connexion Internet lente. En testant la vitesse de chargement des pages sur une vitesse de réseau plus lente, nous pouvons mieux comprendre la direction des performances et de l'optimisation du composant.

De plus, nous pouvons également optimiser la rootMargin (marge racine) et le seuil (seuil) de l'API Intersection Observer pour rendre le composant mieux adaptable à différents appareils et résolutions. Nous pouvons ajuster les marges racine et les seuils pour déterminer quand un croisement est enregistré, et enregistrer les informations d'optimisation dans un outil de surveillance pour une analyse et une amélioration plus approfondies.

Résumé

Dans cet article, nous avons appris à utiliser Vue pour implémenter un composant d'image chargé paresseux. Nous avons d'abord créé un composant d'image de base et ajouté une fonction de chargement paresseux simulé en utilisant les fonctionnalités de Vue. Enfin, nous discutons également de la manière de tester et d'optimiser ce composant.

Grâce à cette implémentation, nous pouvons accélérer le chargement des ressources d'image sur le site Web et charger d'autres parties de l'image lorsque l'utilisateur fait glisser la page, améliorant ainsi l'expérience utilisateur.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal