Créer une recherche d'arborescence de menu dynamique avec Vue.js

JavaScriptJavaScriptBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à construire une fonctionnalité de recherche d'arborescence de menu dynamique à l'aide de Vue.js. Le projet consiste à récupérer les données de menu secondaire à partir d'un fichier JSON, à implémenter une fonctionnalité de recherche approximative et à afficher l'arborescence de menu filtrée sur la page.

👀 Aperçu

Dynamic menu tree search demo

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment récupérer les données de menu secondaire à partir d'un fichier JSON à l'aide de la bibliothèque axios
  • Comment implémenter une fonctionnalité de recherche pour filtrer les éléments de menu en fonction de l'entrée de l'utilisateur
  • Comment afficher l'arborescence de menu filtrée sur la page, en mettant en évidence le texte correspondant

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Développer une interface utilisateur dynamique et interactive à l'aide de Vue.js
  • Récupérer des données à partir d'un fichier JSON et gérer la récupération asynchrone de données
  • Implémenter une fonctionnalité de recherche approximative pour filtrer les données en fonction de l'entrée de l'utilisateur
  • Afficher une structure d'arborescence de menu hiérarchique et mettre en évidence le texte correspondant

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript(("JavaScript")) -.-> javascript/NetworkingGroup(["Networking"]) javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/async_prog("Asynchronous Programming") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/NetworkingGroup -.-> javascript/http_req("HTTP Requests") subgraph Lab Skills javascript/loops -.-> lab-445759{{"Créer une recherche d'arborescence de menu dynamique avec Vue.js"}} javascript/array_methods -.-> lab-445759{{"Créer une recherche d'arborescence de menu dynamique avec Vue.js"}} javascript/async_prog -.-> lab-445759{{"Créer une recherche d'arborescence de menu dynamique avec Vue.js"}} javascript/dom_manip -.-> lab-445759{{"Créer une recherche d'arborescence de menu dynamique avec Vue.js"}} javascript/http_req -.-> lab-445759{{"Créer une recherche d'arborescence de menu dynamique avec Vue.js"}} end

Configure la structure du projet

Dans cette étape, vous allez configurer les fichiers et la structure du projet. Suivez les étapes ci-dessous pour terminer cette étape :

Ouvrez le dossier du projet. La structure de répertoire est la suivante :

├── js
│    ├── axios.min.js ## Bibliothèque d'encapsulation Ajax utilisée pour l'acquisition asynchrone de données
│    ├── index.js ## Code logique pour implémenter les fonctions de la page
│    └── vue.js ## Version 2.x du framework Vue.js
├── data.json ## Les données totales du menu secondaire
└── index.html ## Mise en page de la page

Cliquez sur le bouton Go Live dans le coin inférieur droit de WebIDE pour exécuter le projet.

Ensuite, ouvrez "Web 8080" en haut de la machine virtuelle et rafraîchissez-le manuellement, vous verrez la page.

Actuellement, seule la mise en page statique est affichée, et l'acquisition et l'affichage asynchrones des données du menu secondaire ainsi que la fonction de recherche approximative ne sont pas implémentées.

Dans cette étape, vous allez apprendre à récupérer les données du menu secondaire à partir du fichier data.json à l'aide de la bibliothèque axios.

  1. Ouvrez le fichier index.js dans le répertoire /js.
  2. Dans le hook de cycle de vie created(), utilisez la méthode axios.get() pour récupérer les données à partir du fichier data.json :
created() {
  axios.get("../data.json").then((res) => {
    this.list = res.data;
    this.resultList = res.data;
  });
},

Ce code récupérera les données à partir du fichier data.json et les stockera dans les propriétés de données list et resultList.

Implémentez la fonctionnalité de recherche

Dans cette étape, vous allez apprendre à implémenter la fonctionnalité de recherche pour les éléments de menu secondaire.

  1. Dans le fichier index.js, ajoutez une méthode searchData() à l'objet methods :
methods: {
  searchData() {
    // TODO: Implémenter la fonction de recherche
    this.resultList = [];
    let set = new Set();
    this.list.forEach((item1) => {
      if (item1.meta.title.search(this.search)!== -1) {
        set.add(item1);
      }
      if (item1.children) {
        item1.children.forEach((item2) => {
          if (item2.meta.title.search(this.search)!== -1) {
            set.add(item1);
          }
        });
      }
    });
    this.resultList = set;
  }
}
  1. Mettez à jour la propriété de données resultList en fonction de l'entrée de recherche. La méthode searchData() parcourra la donnée list et ajoutera tous les éléments correspondants à un objet Set. L'objet Set est ensuite assigné à la propriété de données resultList.

Cette implémentation affichera les éléments de menu secondaire qui correspondent à la requête de recherche, le texte correspondant étant mis en évidence avec un fond jaune.

Avec ces modifications, la page affichera désormais l'arborescence de menu filtrée en fonction de l'entrée de recherche, le texte correspondant étant mis en évidence.

L'effet d'implémentation final est le suivant :

Image Description
✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.