window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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-Anwendung verbessern. Einige praktische Tipps - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2020-10-30
Software-Entwicklung

Vue.js-Anwendung verbessern. Einige praktische Tipps

Der Codest

Dominik Grzedzielski

Senior Software Engineer

Vue ist ein schnell wachsendes progressives Framework für die Erstellung von Benutzeroberflächen. Es wurde das JavaScript-Framework mit den meisten Sternen auf GitHub und das am höchsten bewertete Projekt der Jahre 2016 und 2017 auf demselben Portal.

Erstellen von Anwendungen in Vue ist an sich sehr einfach, aber wenn Sie qualitativ hochwertige Anwendungen erstellen wollen, müssen Sie sich schon etwas mehr Mühe geben.

Teil sein von Der Codest Team und echter Verfechter der Vue-Technikmöchte ich Ihnen einige Tipps (nicht aus den offiziellen Vue-Dokumenten kopiert), die mühelos die Code Qualität und die Leistung von Vue-Anwendungen.

Wenden Sie als erstes den Vue Style Guide und ESLint an

Ich möchte nicht wiederholen, was bereits gesagt wurde. In den Vue-Dokumenten gibt es einen Style Guide:
Vue 2 Dokumente - Stilrichtlinien oder
Vue 3 Dokumente - Stilrichtlinien

Sie können dort vier Regelkategorien finden. Drei davon sind uns besonders wichtig:

  • Wesentlich Regeln, die uns vor Fehlern bewahren,
  • Empfohlen und dringend empfohlen Regeln für die Einhaltung bewährter Praktiken - zu Qualität verbessern und die Lesbarkeit des Codes.

Sie denken vielleicht: "Was?! Muss ich mir jede Regel merken?" Natürlich müssen Sie das nicht. Sie können ESLint verwenden, um diese Regeln für Sie zu erledigen. Sie müssen nur alles richtig in der ESLint-Konfigurationsdatei einstellen. Ich schlage vor, dass Sie die empfohlen Voreinstellung da Sie ein völlig kostenloses Regelwerk erhalten, das Ihnen bei der Erstellung von Anwendungen mit bewährten Verfahren hilft. Wie wird es eingerichtet?

Standardmäßig sollten Sie Folgendes finden erweitert Schlüssel in der ESLint-Konfiguration und ersetzen Sie "plugin:vue/essential" mit "plugin:vue/recommended"das ist alles.

Natürlich gibt es ein paar Regeln, die Sie beachten sollten, denn ESLint kann nicht alles selbst erledigen. Zum Beispiel:

  • einheitliche Namensgebung,
  • Benennung von Ereignissen im Kebab-Fall,
  • Voranstellen von $_Namensraum_ private Eigenschaften in Plugins, Mixins, etc,
  • Reihenfolge der Elemente der obersten Ebene einer einzelnen Dateikomponente.

Verwenden Sie nicht mehrere v-if

Es kann manchmal notwendig sein, bedingt mehr als ein Element zu rendern, aber die Leute schreiben oft etwas in dieser Art:

Inhalt

Inhalt

Inhalt

Das ist unnötig, weil wir es eleganter schreiben können:

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

Was aber, wenn wir dies als Wurzelelement tun wollen? In Vuekönnen wir nicht verwenden für diesen Zweck. In manchen Fällen kann eine Umhüllung mit div ausreichen.

Das ist in Ordnung, aber so sehr wir auch wollen, manchmal können wir Elemente nicht in div einpacken, zum Beispiel wegen der HTML-Semantik (z.B.

  • muss ein direktes Kind sein von
      oder
        ). Wenn wir also schreiben müssen:

         
      1. (( item.name ))
      2. ...und wir werden einen Fehler wie diesen sehen:

        Vue js code

        Wir können damit umgehen, indem wir mit JSX und einer funktionalen KomponenteAuch hier sollten wir einen Booleschen Wert übergeben, der das v-if ersetzt.

        Keine API-Aufruf-Handler in Komponenten schreiben

        Eigentlich ist dies nur eines der Beispiele dafür, was man in Komponenten nicht tun sollte. Tun Sie einfach das, was lokal in der Komponentenlogik notwendig ist. Jede Methode, die extern sein könnte, sollte abgetrennt und nur in den Komponenten aufgerufen werden, z. B. in der Geschäftslogik.

        Beispiel:

        Statt einer Methode wie dieser:

        erstellt() (
        this.fetchArticles();
        ),
        Methoden: (
         async fetchArticles() (
          try (
            const data = await axios.get(url);
            this.articles = data.articles;
            ) catch (e) (
            // Fehler behandeln
            )
          )
        )

        Schreiben Sie etwas in dieser Art - rufen Sie einfach die richtige Methode auf, die API-Ergebnisse zurückgibt:

         async fetchArticles() (
           try (
             this.articles = await ArticlesService.fetchAll();
           ) catch (e) (
             // Fehler behandeln
           )
          )

        Verwendung von Steckplätzen statt großer Mengen von Requisiten

        Manchmal ist die Verwendung von Requisiten ausreichend, aber es gibt auch Fälle, in denen sie nicht effizient sind. Das kann in Situationen passieren, in denen wir zu viele Requisiten hinzufügen müssen, damit die Komponente so funktioniert, wie wir es wollen. Das einfachste Beispiel könnte eine Schaltflächenkomponente sein. Zweifelsohne handelt es sich um eine Komponente, die überall in einer Anwendung verwendet werden kann. Betrachten wir also eine Schaltflächenkomponente wie diese.

        
        (( Text ))

        In diesem Stadium ist es eine einfache Komponente, die nur Textrequisiten akzeptiert. Ok, aber es kann nicht genug sein, da wir Icons in der Schaltfläche benötigen werden. In diesem Fall müssen wir 2 weitere Requisiten hinzufügen (2, weil wir die Möglichkeit haben wollen, sie vor oder nach dem Text einzufügen). Die Komponente wird also wie folgt aussehen:

        
        (( Text ))

        Es ist nicht schlecht, wir haben nur 3 Stützen, aber...

        Was ist, wenn wir einen Belastungsindikator benötigen? Nun, dann müssten wir eine weitere Stütze hinzufügen. Und das für jede neue Funktion! Klingt es jetzt herausfordernd, mit dem Wachstum der Anzahl der Komponenten Schritt zu halten? Ja, das tut es, definitiv!

        Verwenden wir stattdessen Steckplätze.

        Einfacher, nicht wahr? Ok, aber wie können wir die Funktion "Symbol hinzufügen" bekommen? Das ist wirklich einfach! Verwenden Sie einfach die Komponente wie folgt:

        Zurück
        
        Weiter

        Einfacher Weg zur Leistungssteigerung

        Ich werde Ihnen einige Tipps geben, die wirklich einfach umzusetzen sind, so dass Sie sofort davon profitieren können.

        Faule Lastrouten

        Manchmal gibt es Routen, die nur für Admins oder Benutzer mit besonderem Zugang verfügbar sind, oder sie werden weniger besucht als andere. Das sind perfekte Fälle für die Verwendung der "Lazy Load"-Route.

        Verwenden Sie einfach die Pfeilfunktion in Ihrer Komponenteneigenschaft, um die Importfunktion zurückzugeben:

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

        Anstelle von:

        import PWelcome from '@/pages/p-welcome';
        
        export default new VueRouter (
        (
        Modus: 'Geschichte',
        routes: [
        (
        path: '/landing',
        component: PWelcome, //gerade importierte Komponente
        name: 'willkommen'
        ),

        Langsames Laden von Vue-Komponenten

        Eine ähnliche Situation kann eintreten bei Vue-Bestandteile. Wir können einzelne Dateikomponenten auf diese Weise importieren:

        const lazyComponent = () => import('pathToComponent.vue')
        export default (
        Komponenten: (lazyComponent )
        )
        
        // Eine andere Syntax
        exportieren Standard (
        Komponenten: (
        lazyComponent: () => import('pathToComponent.vue')
        )
        )

        Dank der "Lazy Load"-Funktion dieser Komponente wird sie nur bei Anforderung heruntergeladen. Wenn wir zum Beispiel eine Komponente mit v-if haben, wird sie nur angefordert, wenn die Komponente gerendert werden soll. Wenn also der v-if-Wert nicht wahr ist, wird die Komponente nicht geladen. Aus diesem Grund kann Lazy Importing auch verwendet werden für JavaScript Dateien.

        Bonus: Bei der Verwendung von Vue CLI 3+ wird standardmäßig jede träge geladene Ressource vorgeholt!

        vue js entwicklung

        Verwendung von transparenten Wrappern anstelle von Attributrequisiten

        Betrachten Sie eine Komponente wie diese:

        Ohne Probleme können wir es so verwenden:

        oder


        Es funktioniert, weil Vue ermöglicht es Ihnen, HTML-Attribute an die Komponente zu übergeben, auch wenn Sie sie nicht als Requisiten deklariert haben. Die HTML-Attribute werden auf das Wurzelelement der Komponente (in diesem Fall input) angewendet.

        Das Problem tritt auf, wenn wir unsere Eingabekomponente erweitern wollen, denn sie könnte wie folgt aussehen:

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

        Wenn Sie die Komponente auf diese Weise verwenden:

        wird nicht so funktionieren, wie wir es wollen, weil der Typ und der Platzhalter auf div (Root-Element) angewendet werden und das macht keinen Sinn. Wir müssen uns also damit auseinandersetzen, denn wir wollen dem Eingabeelement unsere Attribute hinzufügen. Ihr erster Gedanke ist vielleicht: "Fügen wir die Requisiten hinzu, die wir brauchen!", und natürlich wird das funktionieren, aber... was, wenn wir Folgendes verwenden wollen Typ, Autovervollständigen, Platzhalter, Autofokus, deaktiviert, Eingabemodususw., dann müssen wir die Requisiten für jedes HTML-Attribut definieren. Ich persönlich mag diese langwierige Methode nicht, also lasst uns nach etwas Besserem suchen!

        Wir können das gesamte Problem in nur zwei Zeilen.

        <template>
          <div class="form-group">
            <label :for="id">(( Etikett ))</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>

        Wir können verwenden v-bind="$attrs" und übergeben Sie Attribute direkt an ohne große Mengen von Requisiten zu deklarieren. Denken Sie auch daran, die Option inheritAttrs: false um die Übergabe der Attribute an das Wurzelelement zu deaktivieren. Gehen wir noch einen Schritt weiter: Was ist, wenn wir dieser Eingabe Ereignis-Listener hinzufügen müssen? Auch hier könnte man mit Requisiten oder benutzerdefinierten Ereignissen arbeiten, aber es gibt eine bessere Lösung.

        <template>
          <div class="form-group">
            <label :for="id">(( Etikett ))</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>

        Es gibt eine neue berechnete Eigenschaft, die die Komponente für Hörer zurückgibt und den Eingabe-Hörer hinzufügt. Wir verwenden diese berechnete Eingabe, indem wir einfach schreiben v-on="Zuhörer".

        Verwenden Sie den Watcher mit der Option immediate anstelle des erstellten Hooks und des Watchers zusammen

        Oft holen wir einige Daten bei einem erstellten (oder montierten) Hook, aber dann müssen wir diese Daten bei jeder Änderung einer Eigenschaft holen, z. B. die aktuelle Seite der Paginierung. Einige neigen dazu, es so aufzuschreiben:

        Natürlich, es funktioniert, aber... Es ist nicht der beste Ansatz, nicht einmal ein guter. Also, lassen Sie uns prüfen, wie wir dies umgestalten können, Ein Beispiel für einen nicht so schlechten Ansatz:

        Die obige Version ist besser, weil eine weitere Methode nicht notwendig ist, wir haben nur eine Methode genannt, die aufgerufen werden soll, um watchedProperty zu ändern.

        Ein noch besserer Ansatz:

        Wir sind den created-Hook losgeworden. Durch das Hinzufügen der Option "immediate" wird der Komponentenaufruf der fetchData-Methode unmittelbar nach dem Beginn der Beobachtung ausgeführt (ein wenig vor dem created-Hook und nach beforeCreated), sodass er anstelle des created-Hooks verwendet werden kann.

        Vue.js Tipps Zusammenfassung

        Diese Tipps werden Ihre Bewerbung nicht perfekt machen, aber wenn Sie sie befolgen, werden Sie schnell die Qualität Ihres Codes zu verbessern. Ich hoffe, Sie finden auch in den oben genannten Beispielen etwas Interessantes.

        Beachten Sie, dass einige von ihnen für die Zwecke des Artikels vereinfacht wurden.

        Lesen Sie mehr:

        JavaScript ist völlig tot. Irgendein Kerl im Internet

        Ein tieferer Blick auf die beliebtesten React-Haken

        Software-Projekte, bei denen Sie JavaScript verwenden können

  • Ähnliche Artikel

    Software-Entwicklung

    Zukunftssichere Web-Apps bauen: Einblicke vom The Codest-Expertenteam

    Entdecken Sie, wie sich The Codest bei der Erstellung skalierbarer, interaktiver Webanwendungen mit Spitzentechnologien auszeichnet, die nahtlose Benutzererfahrungen auf allen Plattformen bieten. Erfahren Sie, wie unsere Expertise die digitale Transformation und...

    DAS SCHÖNSTE
    Software-Entwicklung

    Top 10 Softwareentwicklungsunternehmen in Lettland

    Erfahren Sie in unserem neuesten Artikel mehr über die besten Softwareentwicklungsunternehmen Lettlands und ihre innovativen Lösungen. Entdecken Sie, wie diese Technologieführer Ihr Unternehmen voranbringen können.

    thecodest
    Enterprise & Scaleups Lösungen

    Grundlagen der Java-Softwareentwicklung: Ein Leitfaden für erfolgreiches Outsourcing

    Entdecken Sie diesen wichtigen Leitfaden zum erfolgreichen Outsourcing der Java-Softwareentwicklung, um die Effizienz zu steigern, auf Fachwissen zuzugreifen und den Projekterfolg mit The Codest voranzutreiben.

    thecodest
    Software-Entwicklung

    Der ultimative Leitfaden für Outsourcing in Polen

    Der Anstieg des Outsourcings in Polen wird durch wirtschaftliche, bildungspolitische und technologische Fortschritte angetrieben, die das IT-Wachstum und ein unternehmensfreundliches Klima fördern.

    TheCodest
    Enterprise & Scaleups Lösungen

    Der vollständige Leitfaden für IT-Audit-Tools und -Techniken

    IT-Audits gewährleisten sichere, effiziente und gesetzeskonforme Systeme. Erfahren Sie mehr über ihre Bedeutung, indem Sie den vollständigen Artikel lesen.

    Der Codest
    Jakub Jakubowicz CTO & Mitbegründer

    Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

      Über uns

      The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

      Vereinigtes Königreich - Hauptsitz

      • Büro 303B, 182-184 High Street North E6 2JA
        London, England

      Polen - Lokale Tech-Hubs

      • Fabryczna Office Park, Aleja
        Pokoju 18, 31-564 Kraków
      • Brain Embassy, Konstruktorska
        11, 02-673 Warszawa, Polen

        Der Codest

      • Startseite
      • Über uns
      • Dienstleistungen
      • Fallstudien
      • Gewusst wie
      • Karriere
      • Wörterbuch

        Dienstleistungen

      • IT-Beratung
      • Software-Entwicklung
      • Backend-Softwareentwicklung
      • Frontend-Softwareentwicklung
      • Staff Augmentation
      • Backend-Entwickler
      • Cloud-Ingenieure
      • Daten-Ingenieure
      • Andere
      • QS-Ingenieure

        Ressourcen

      • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
      • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
      • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
      • Was sind die größten Herausforderungen für CTOs und CIOs?
      • Der Codest
      • Der Codest
      • Der Codest
      • Privacy policy
      • Website terms of use

      Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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