window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Vue.js amélioration de l'application. Quelques conseils pratiques - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2020-10-30
Développement de logiciels

Amélioration de l'application Vue.js. Quelques conseils pratiques

The Codest

Dominik Grzedzielski

Senior Software Engineer

Vue est un framework progressif à croissance rapide pour la construction d'interfaces utilisateur. Il est devenu le framework JavaScript avec le plus d'étoiles sur GitHub et le projet le plus étoilé de 2016 et 2017 sur le même portail.

Créer des applications en Vue est vraiment simple en soi, mais si vous voulez créer des applications de bonne qualité, vous devrez relever un défi un peu plus grand.

Faire partie de The Codest équipe et véritable défenseur de la Technologie VueJe souhaite partager avec vous quelques conseils (non copié à partir de la documentation officielle du Vue) qui améliorera sans effort code la qualité et la performance des applications Vue.

Tout d'abord, appliquez le guide de style Vue et ESLint

Je ne veux pas répéter ce qui a déjà été dit. Il y a un guide de style dans la documentation du Vue :
Vue 2 docs - guide de style ou
Vue 3 docs - guide de style

Vous y trouverez quatre catégories de règles. Trois d'entre elles nous intéressent particulièrement :

  • Essentiel des règles qui nous empêchent de commettre des erreurs,
  • Recommandé et fortement recommandé règles pour conserver les meilleures pratiques - à améliorer la qualité et la lisibilité du code.

Vous vous dites peut-être... "Quoi ? Dois-je me souvenir de toutes les règles ?" Bien sûr que non. Vous pouvez utiliser ESLint pour s'occuper de ces règles à votre place. Il vous suffit de tout paramétrer correctement dans le fichier de configuration d'ESLint. Je suggère d'utiliser l'option recommandé préétabli vous obtenez un ensemble de règles totalement gratuites qui vous aident à construire des applications avec de bonnes pratiques. Comment l'installer ?

Par défaut, vous devriez trouver s'étend dans la configuration d'ESLint et remplacer "plugin:vue/essentiel" avec "plugin:vue/recommended"c'est tout.

Bien sûr, il y a quelques règles à respecter, car ESLint ne peut pas tout gérer tout seul. Par exemple :

  • une dénomination cohérente,
  • la dénomination des événements dans la boîte à kebab,
  • préfixation $_namespace_ propriétés privées dans les plugins, mixins, etc,
  • ordre des éléments de premier niveau d'un composant de fichier unique.

Ne pas utiliser plusieurs v-if

Il peut parfois être nécessaire de rendre conditionnellement plus d'un élément, mais les gens écrivent souvent quelque chose comme cela :

contenu

contenu

contenu

Ce n'est pas nécessaire parce que nous pouvons l'écrire plus élégamment :

<code> <template v-if="condition">
   <div>contenu</div>
   <div>contenu</div>
   <div>contenu</div>
 </template>

Mais qu'en est-il si nous voulons le faire en tant qu'élément racine ? Dans le cas d'un Vuenous ne pouvons pas utiliser à cette fin. Dans certains cas, il suffit de l'envelopper dans du papier d'emballage.

C'est bien, mais, même si nous le voulons, nous ne pouvons parfois pas envelopper les éléments dans des div, par exemple, à cause de la sémantique html (par exemple.

  • doit être un enfant direct de
      ou
        ). Ainsi, lorsque nous devons écrire :

         
      1. (( item.name ))
      2. ...et nous verrons une erreur comme celle-ci :

        Vue js code

        Nous pouvons y remédier en en utilisant JSX et un composant fonctionnelOn peut aussi passer un booléen qui remplacera le v-if.

        Ne pas écrire les gestionnaires d'appels d'api dans les composants

        En fait, ce n'est qu'un des exemples de ce qu'il ne faut pas faire dans les composants. Il suffit de faire ce qui est localement nécessaire dans la logique des composants. Toute méthode qui pourrait être externe devrait être séparée et appelée uniquement dans les composants, par exemple la logique métier.

        Exemple :

        Au lieu d'une méthode comme celle-ci :

        créé() (
        this.fetchArticles() ;
        ),
        méthodes : (
         async fetchArticles() (
          try (
            const data = await axios.get(url) ;
            this.articles = data.articles ;
            ) catch (e) (
            // gérer l'erreur
            )
          )
        )

        Écrivez quelque chose comme ceci - appelez simplement la méthode appropriée qui renverra les résultats de l'API :

         async fetchArticles() (
           try (
             this.articles = await ArticlesService.fetchAll() ;
           ) catch (e) (
             // gérer l'erreur
           )
          )

        Utiliser des créneaux plutôt que de grandes quantités d'accessoires

        Parfois, l'utilisation d'accessoires est suffisante, mais il y a aussi des cas où ils ne sont pas efficaces. Cela peut se produire dans des situations où nous devrions ajouter trop d'accessoires pour que le composant fonctionne comme nous le souhaitons. L'exemple le plus simple est celui d'un bouton. Il s'agit sans aucun doute d'un composant qui peut être utilisé n'importe où dans une application. Considérons donc un composant de type bouton comme celui-ci.

        
        (( texte ))

        A ce stade, il s'agit d'un simple composant qui n'accepte que du texte. Ok, mais ce n'est peut-être pas suffisant car nous aurons besoin d'icônes dans le bouton. Dans ce cas, nous devons ajouter 2 autres accessoires (2, parce que nous voulons avoir l'option d'ajouter avant ou après le texte). Ainsi, le composant ressemblera à ceci :

        
        (( texte ))

        Ce n'est pas mal, nous n'avons que 3 accessoires, mais...

        Et si nous avions besoin d'un indicateur de chargement ? Eh bien, nous devrions ajouter un autre accessoire. Et ce, pour chaque nouvelle fonctionnalité ! Suivre l'augmentation du nombre de composants vous semble-t-il un défi aujourd'hui ? Oui, sans aucun doute !

        Utilisons plutôt des créneaux.

        Plus simple, non ? Ok, mais comment pouvons-nous obtenir la fonction d'ajout d'icône ? C'est très simple ! Il suffit d'utiliser le composant comme ceci :

        Retour
        
        Suivant

        Un moyen simple d'améliorer les performances

        Je vais partager avec vous quelques conseils qui sont vraiment faciles à mettre en œuvre, afin que vous puissiez en bénéficier immédiatement.

        Itinéraires de chargement paresseux

        Parfois, nous avons des routes qui ne sont disponibles que pour les administrateurs, ou les utilisateurs ayant un accès particulier, elles peuvent également être moins visitées que d'autres. Ce sont des cas parfaits pour l'utilisation de la route lazy load.

        Il suffit d'utiliser la fonction arrow dans la propriété de votre composant pour renvoyer la fonction d'importation :

         export default new VueRouter (
           (
             mode : 'history',
             routes : [
               (
                 path : '/landing',
                 component : () => import('../pages/p-welcome'),
                 name : 'welcome'
               ),
          ...

        Au lieu de :

        import PWelcome from '@/pages/p-welcome' ;
        
        export default new VueRouter (
        (
        mode : 'history',
        routes : [
        (
        chemin : '/landing',
        composant : PWelcome, //composant juste importé
        name : 'welcome'
        ),

        Chargement paresseux des composants Vue

        Une situation similaire peut se produire avec Composants Vue. Nous pouvons importer paresseusement des composants d'un seul fichier comme ceci :

        const lazyComponent = () => import('pathToComponent.vue')
        export default (
        composants : (lazyComponent )
        )
        
        // Autre syntaxe
        export default (
        composants : (
        lazyComponent : () => import('pathToComponent.vue')
        )
        )

        Grâce au chargement paresseux de ce composant, il ne sera téléchargé que lorsqu'il sera demandé. Par exemple, si nous avons un composant avec v-if, il ne sera demandé que si le composant doit être rendu. Ainsi, si la valeur v-if n'est pas vraie, le composant ne sera pas chargé. C'est pourquoi l'importation paresseuse peut également être utilisée pour les composants de type JavaScript dossiers.

        Bonus : Lorsque l'on utilise Vue CLI 3+, toutes les ressources chargées paresseusement sont préfixées par défaut !

        développement vue js

        Utiliser des enveloppes transparentes au lieu d'attributs accessoires

        Prenons l'exemple d'un composant comme celui-ci :

        Sans aucun problème, nous pouvons l'utiliser comme suit :

        ou


        Cela fonctionne, car Vue vous permet de transmettre des attributs html au composant, même si vous ne les avez pas déclarés en tant qu'accessoires. Les attributs html sont appliqués à l'élément racine du composant (input, dans ce cas).

        Le problème apparaît lorsque nous voulons développer notre composant d'entrée, car il pourrait ressembler à ceci :

        <code> <template>
           <div class="form-group">
             <label :for="id">(( étiquette ))</label>
             <input
               :id="id"
               :value="value"
               class="base-input"
               @input="$emit('input', $event.target.value)"
             >
           </div>
         </template>

        Maintenant, en utilisant le composant de cette façon :

        ne fonctionnera pas comme nous le souhaitons, car le type et l'espace réservé seront appliqués à div (l'élément racine) et cela n'a aucun sens. Nous devons donc nous en occuper, car nous voulons ajouter nos attributs à l'élément input. Votre première pensée peut être "ajoutons les accessoires dont nous avons besoin !" et bien sûr cela fonctionnera, mais... que se passe-t-il si nous voulons utiliser type, autocomplétion, espace réservé, autofocus, handicapé, mode d'entréeetc., nous devons alors définir les props pour chaque attribut html. Personnellement, je n'aime pas cette longue méthode, alors cherchons quelque chose de mieux !

        Nous pouvons traiter l'ensemble du problème en seulement deux lignes.

        <template>
          <div class="form-group">
            <label :for="id">(( étiquette ))</label>
            <!-- pay attention to v-bind="$attrs" -->
            <input
              :id="id"
              v-bind="$attrs"
              :value="value"
              class="base-input"
              @input="$emit('input', $event.target.value)"
            >
          </div>
        </template>
        
        <script>
        export default (
          name: 'BaseInput',
          inheritAttrs: false, // <- pay attention to this line
          props: ['value', 'label', 'id']
        );
        </script>

        Nous pouvons utiliser v-bind= "$attrs" et transmettre les attributs directement à sans déclarer d'énormes quantités d'accessoires. N'oubliez pas non plus d'ajouter l'option inheritAttrs : false afin de ne pas transmettre les attributs à l'élément racine. Allons un peu plus loin : que se passe-t-il si nous avons besoin d'ajouter des récepteurs d'événements à cette entrée ? Encore une fois, cela pourrait être géré par des accessoires ou des événements personnalisés, mais il y a une meilleure solution.

        <template>
          <div class="form-group">
            <label :for="id">(( étiquette ))</label>
            <!-- pay attention to v-on="listeners" -->
            <input
              :id="id"
              v-bind="$attrs"
              :value="value"
              class="base-input"
              v-on="listeners"
            >
        </div>
        </template>
        
        <script>
        export default (
          name: 'BaseInput',
          inheritAttrs: false,
          props: ['value', 'label', 'id'],
          computed: (
            listeners() (
              return (
                ...this.$listeners,
                input: event => this.$emit('input', event.target.value)
              );
            )
          )
        );
        </script>

        Il existe une nouvelle propriété calculée qui renvoie le composant pour les auditeurs et ajoute l'auditeur d'entrée. Nous utilisons cette entrée calculée en écrivant simplement v-on="listeners".

        Utiliser l'observateur avec l'option immediate au lieu du crochet créé et de l'observateur ensemble

        Nous récupérons souvent des données sur un crochet créé (ou monté), mais nous devons ensuite récupérer ces données à chaque modification d'une propriété, par exemple la page en cours de la pagination. Certains ont tendance à l'écrire comme ceci :

        Bien sûr, cela fonctionne, mais... Ce n'est pas la meilleure approche, ni même une bonne. Alors, voyons comment nous pouvons refactoriser cela, un exemple d'une approche pas si mauvaise :

        La version ci-dessus est meilleure parce qu'une autre méthode n'est pas nécessaire, nous avons seulement nommé une méthode qui doit être appelée pour modifier watchProperty.

        Une meilleure approche encore :

        Nous nous sommes débarrassés du crochet de création. En ajoutant l'option "immediate", nous faisons en sorte que ce composant appelle la méthode fetchData immédiatement après le début de l'observation (un peu avant le crochet created et après beforeCreated), de sorte qu'il peut être utilisé à la place du crochet created.

        Résumé des conseils de Vue.js

        Ces conseils ne rendront pas votre candidature parfaite, mais leur mise en œuvre permettra d'accélérer le processus. améliorer la qualité de votre code. J'espère également que vous trouverez quelque chose d'intéressant dans les exemples ci-dessus.

        Notez que certaines d'entre elles ont été simplifiées pour les besoins de l'article.

        En savoir plus :

        JavaScript est totalement mort. Un type sur Internet

        Un regard plus approfondi sur les crochets React les plus populaires

        Projets logiciels pour lesquels vous pouvez utiliser JavaScript

  • Articles connexes

    Développement de logiciels

    Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

    Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

    LE CODEST
    Développement de logiciels

    Les 10 premières entreprises de développement de logiciels basées en Lettonie

    Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

    thecodest
    Solutions pour les entreprises et les grandes entreprises

    L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

    Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

    thecodest
    Développement de logiciels

    Le guide ultime de l'externalisation en Pologne

    L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

    TheCodest
    Solutions pour les entreprises et les grandes entreprises

    Le guide complet des outils et techniques d'audit informatique

    Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

    The Codest
    Jakub Jakubowicz CTO & Co-Fondateur

    Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

      A propos de nous

      The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

      Royaume-Uni - Siège

      • Bureau 303B, 182-184 High Street North E6 2JA
        Londres, Angleterre

      Pologne - Les pôles technologiques locaux

      • Parc de bureaux Fabryczna, Aleja
        Pokoju 18, 31-564 Kraków
      • Brain Embassy, Konstruktorska
        11, 02-673 Varsovie, Pologne

        The Codest

      • Accueil
      • A propos de nous
      • Services
      • Études de cas
      • Savoir comment
      • Carrières
      • Dictionnaire

        Services

      • Conseil consultatif
      • Développement de logiciels
      • Développement backend
      • Développement frontal
      • Staff Augmentation
      • Développeurs backend
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs des données
      • Autres
      • Ingénieurs AQ

        Ressources

      • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
      • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
      • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
      • Quels sont les principaux défis des CTO et des DSI ?
      • The Codest
      • The Codest
      • The Codest
      • Privacy policy
      • Conditions d'utilisation du site web

      Copyright © 2025 par The Codest. Tous droits réservés.

      fr_FRFrench
      en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench