The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2020-10-30
Vývoj softwaru

Vylepšení aplikace Vue.js. Několik praktických tipů

The Codest

Dominik Grzedzielski

Senior Software Engineer

Vue je rychle se rozvíjející progresivní framework pro vytváření uživatelských rozhraní. Stal se frameworkem JavaScript s největším počtem hvězdiček na GitHubu a nejlépe hodnoceným projektem roku 2016 a 2017 na stejném portálu.

Vytváření aplikací v Vue je jako takový opravdu jednoduchý, ale pokud chcete vytvářet kvalitní aplikace, čeká vás trochu větší výzva.

Být součástí The Codest tým a skutečný zastánce Technologie Vue, chci se s vámi podělit o některé tipy (nekopírované z oficiálních dokumentů Vue), které bez námahy zlepší kód kvality a výkon aplikací Vue.

Nejprve použijte Průvodce stylem Vue a ESLint

Nechci opakovat to, co již bylo řečeno. V dokumentech Vue je průvodce stylem:
Dokumenty Vue 2 - průvodce stylem nebo
Vue 3 dokumenty - průvodce stylem

Najdete zde čtyři kategorie pravidel. Tři z nich nás opravdu zajímají:

  • Základní pravidla, která brání nás z chyb,
  • Doporučené stránky a důrazně doporučujeme pravidla pro dodržování osvědčených postupů - aby zlepšit kvalitu a čitelnost kódu.

Možná si říkáte... "Cože?! Musím si pamatovat každé pravidlo?" Samozřejmě, že nemusíte. Můžete použít ESLint, který se o tato pravidla postará za vás. Stačí jen vše správně nastavit v konfiguračním souboru ESLint. Doporučuji použít doporučené stránky přednastavené protože získáte zcela zdarma sadu pravidel, která vám pomohou při vytváření aplikací podle správných postupů. Jak ji nastavit?

Ve výchozím nastavení byste měli najít rozšiřuje v konfiguraci ESLint a nahradit "plugin:vue/essential" s "plugin:vue/recommended", to je vše.

Samozřejmě byste měli mít na paměti několik pravidel, protože ESLint si nedokáže poradit se vším sám. Například:

  • důsledné pojmenování,
  • pojmenování událostí v kebab-případech,
  • předpony $_namespace_ soukromé vlastnosti v zásuvných modulech, mixinech atd.,
  • pořadí prvků nejvyšší úrovně jednotlivých komponent souboru.

Nepoužívejte vícenásobné v-if

Někdy může být nutné vykreslit podmíněně více než 1 prvek, ale lidé často něco takového píší:

obsah

obsah

obsah

Je to zbytečné, protože to můžeme napsat elegantněji:

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

Ale co když to chceme udělat jako kořenový prvek? Na adrese Vue, nemůžeme použít pro tento účel. V některých případech by mohlo stačit zabalení do divů.

To je v pořádku, ale ačkoli bychom možná chtěli, někdy nemůžeme elementy zabalit do divů, například kvůli sémantice html (např.

  • musí být přímým potomkem
      nebo
        ). Když tedy musíme napsat:

         
      1. (( item.name ))
      2. ...a uvidíme takovou chybu:

        Vue js kód

        Můžeme se s tím vypořádat tak, že pomocí JSX a funkční komponenty, také bychom měli předat boolean a ten nahradí v-if.

        Nepište obsluhy volání api v komponentách

        Ve skutečnosti je to jen jeden z příkladů toho, co byste v komponentách neměli dělat. Jednoduše dělejte to, co je v logice komponent lokálně nutné. Každá metoda, která by mohla být externí, by měla být oddělena a volána pouze v komponentách, např. obchodní logika.

        Příklad:

        Místo této metody:

        created() (
        this.fetchArticles();
        ),
        metody: (
         async fetchArticles() (
          try (
            const data = await axios.get(url);
            this.articles = data.articles;
            ) catch (e) (
            // zpracovat chybu
            )
          )
        )

        Napište něco takového - stačí zavolat příslušnou metodu, která vrátí výsledky API:

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

        Místo velkého množství rekvizit používejte sloty.

        Někdy je použití rekvizit dostačující, ale jsou i případy, kdy nejsou efektivní. Může se to stát v situacích, kdy bychom museli přidat příliš mnoho rekvizit, aby komponenta fungovala tak, jak chceme. Nejjednodušším příkladem může být komponenta tlačítka. Bezpochyby se jedná o komponentu, kterou lze použít kdekoli v aplikaci. Uvažujme tedy komponentu tlačítka, jako je tato.

        
        (( text ))

        V této fázi se jedná o jednoduchou komponentu, která přijímá pouze textové rekvizity. Dobře, ale to nemusí stačit, protože v tlačítku budeme potřebovat ikony. V tom případě musíme přidat další 2 rekvizity (2, protože chceme mít možnost přidat před nebo za text). Takže komponenta bude vypadat takto:

        
        (( text ))

        Není to špatné, máme jen 3 podpěry, ale...

        Co když potřebujeme indikátor zatížení? To bychom museli přidat další rekvizitu. A to pro každou novou funkci! Zdá se vám nyní udržení kroku s růstem počtu komponent náročné? Ano, rozhodně ano!

        Použijme místo toho sloty.

        Jednodušší, že? Dobře, ale jak můžeme získat funkci přidání ikony? Je to opravdu snadné! Stačí použít komponentu takto:

        Zpět
        
        Další

        Snadný způsob, jak zlepšit výkon

        Podělím se s vámi o několik tipů, které jsou opravdu snadno proveditelné, takže z nich můžete okamžitě těžit.

        Trasy líného načítání

        Někdy jsou trasy dostupné pouze pro administrátory nebo uživatele s určitým přístupem, mohou být také navštěvovány méně než ostatní. To jsou ideální případy pro použití líného načítání trasy.

        Pro vrácení importní funkce stačí použít funkci arrow ve vlastnosti komponenty:

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

        Místo:

        import PWelcome z '@/pages/p-welcome';
        
        export default new VueRouter (
        (
        mode: 'history',
        routes: [
        (
        path: '/landing',
        component: PWelcome, //jen importovaná komponenta
        name: "welcome
        ),

        Líné načítání komponent Vue

        Podobná situace může nastat u Součásti Vue. Takto můžeme líně importovat jednotlivé součásti souboru:

        const lazyComponent = () => import('pathToComponent.vue')
        export default (
        components: (lazyComponent )
        )
        
        // Jiná syntaxe
        export default (
        components: (
        lazyComponent: () => import('pathToComponent.vue')
        )
        )

        Díky línému načítání této komponenty se stáhne až po vyžádání. Například pokud máme komponentu s funkcí v-if, bude vyžádána pouze v případě, že se má komponenta vykreslit. Pokud tedy není hodnota v-if true, komponenta se nenačte. Proto lze líné importování použít také pro JavaScript soubory.

        Bonus: Při použití rozhraní Vue CLI 3+ je každý líně načtený prostředek ve výchozím nastavení přednačten!

        vývoj vue js

        Používání průhledných obalů místo atributových rekvizit

        Vezměme si komponentu, jako je tato:

        Bez problémů ji můžeme použít takto:

        nebo


        Funguje to, protože Vue umožňuje předávat komponentě html atributy, i když jste je nedeklarovali jako rekvizity. Atributy html se použijí na kořenový prvek komponenty (v tomto případě input).

        Problém nastane, když chceme rozšířit naši vstupní komponentu, protože by mohla vypadat takto:

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

        Nyní použijte komponentu tímto způsobem:

        nebude fungovat tak, jak chceme, protože typ a zástupný znak budou použity na div (kořenový element), což nedává smysl. Musíme se s tím tedy vypořádat, protože chceme přidat naše atributy do vstupního prvku. Vaše první myšlenka může být "přidáme rekvizity, které potřebujeme!" a samozřejmě to bude fungovat, ale... co když chceme použít např. typ, automatické dokončování, zástupný symbol, automatické ostření, zakázané, vstupní režim, atd., pak musíme definovat rekvizity pro každý html atribut. Osobně se mi tento zdlouhavý způsob nelíbí, takže hledejme něco lepšího!

        Celým problémem se můžeme zabývat v jen dva řádky.

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

        Můžeme použít v-bind="$attrs" a předávat atributy přímo aniž byste museli deklarovat obrovské množství rekvizit. Nezapomeňte také na přidání možnosti inheritAttrs: false zakázat předávání atributů kořenovému prvku. Pojďme ještě o kousek dál: co když potřebujeme k tomuto vstupu přidat posluchače událostí? Opět by se to dalo řešit pomocí rekvizit nebo vlastních událostí, ale existuje lepší řešení.

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

        Je zde nová vypočtená vlastnost, která vrací komponentu pro posluchače a přidává posluchače vstupu. Tento vypočtený vstup použijeme tak, že jednoduše napíšeme v-on="posluchači".

        Použití watcheru s možností okamžitě místo vytvořeného háčku a watcheru dohromady

        Často načítáme nějaká data na vytvořeném (nebo připojeném) háčku, ale pak potřebujeme tato data načítat při každé změně vlastnosti, např. aktuální stránky stránkování. Někteří mají tendenci to zapisovat takto:

        Samozřejmě to funguje, ale... Není to nejlepší přístup, dokonce ani dobrý. Podívejme se tedy, jak to můžeme refaktorovat, Příklad ne tak špatného přístupu:

        Výše uvedená verze je lepší, protože další metoda není nutná, pouze jsme pojmenovali metodu, která má být volána pro změnu watchedProperty.

        Ještě lepší přístup:

        Zbavili jsme se vytvořeného háčku. Přidáním volby "immediate" způsobíme, že tato komponenta zavolá metodu fetchData ihned po začátku pozorování (je kousek před háčkem created a za beforeCreated), takže ji lze použít místo háčku created.

        Vue.js tipy shrnutí

        Tyto tipy nezajistí, že vaše aplikace bude dokonalá, ale jejich použití vám pomůže rychle. zlepšit kvalitu svého kódu. Také doufám, že ve výše uvedených příkladech najdete něco zajímavého.

        Všimněte si, že některé z nich byly pro účely článku zjednodušeny.

        Přečtěte si více:

        JavaScript je zcela mrtvý. Nějaký chlápek na internetu

        Hlubší pohled na nejoblíbenější háčky React

        Softwarové projekty, kde můžete použít JavaScript

  • Související články

    Ilustrace zdravotnické aplikace pro chytré telefony s ikonou srdce a rostoucím zdravotním grafem, označená logem The Codest, která představuje digitální zdraví a řešení HealthTech.
    Vývoj softwaru

    Softwarové vybavení pro zdravotnictví: a případy použití

    Nástroje, na které se dnes zdravotnické organizace spoléhají, se v ničem nepodobají papírovým kartám z doby před desítkami let. zdravotnický software dnes podporuje zdravotnické systémy, péči o pacienty a moderní poskytování zdravotní péče v klinických a...

    NEJKRÁSNĚJŠÍ
    Abstraktní ilustrace klesajícího sloupcového grafu se stoupající šipkou a zlatou mincí symbolizující efektivitu nákladů nebo úspory. V levém horním rohu se zobrazuje logo The Codest se sloganem "In Code We Trust" na světle šedém pozadí.
    Vývoj softwaru

    Jak rozšířit tým vývojářů bez ztráty kvality produktu

    Zvětšujete svůj vývojový tým? Zjistěte, jak růst, aniž byste museli obětovat kvalitu produktu. Tento průvodce se zabývá příznaky, že je čas na škálování, strukturou týmu, najímáním zaměstnanců, vedením a nástroji - a také tím, jak může The Codest...

    NEJKRÁSNĚJŠÍ
    Vývoj softwaru

    Vytváření webových aplikací odolných vůči budoucnosti: postřehy týmu odborníků The Codest

    Zjistěte, jak společnost The Codest vyniká při vytváření škálovatelných, interaktivních webových aplikací pomocí nejmodernějších technologií, které poskytují bezproblémové uživatelské prostředí na všech platformách. Zjistěte, jak naše odborné znalosti podporují digitální transformaci a obchodní...

    NEJKRÁSNĚJŠÍ
    Vývoj softwaru

    10 nejlepších lotyšských společností zabývajících se vývojem softwaru

    V našem nejnovějším článku se dozvíte o nejlepších lotyšských společnostech zabývajících se vývojem softwaru a jejich inovativních řešeních. Zjistěte, jak mohou tito technologičtí lídři pomoci pozvednout vaše podnikání.

    thecodest
    Podniková a škálovací řešení

    Základy vývoje softwaru v jazyce Java: A Guide to Outsourcing Successfully

    Prozkoumejte tuto základní příručku o úspěšném vývoji softwaru outsourcing Java, abyste zvýšili efektivitu, získali přístup k odborným znalostem a dosáhli úspěchu projektu s The Codest.

    thecodest

    Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

      O nás

      The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

      Spojené království - ústředí

      • Kancelář 303B, 182-184 High Street North E6 2JA
        Londýn, Anglie

      Polsko - Místní technologická centra

      • Kancelářský park Fabryczna, Aleja
        Pokoju 18, 31-564 Krakov
      • Brain Embassy, Konstruktorska
        11, 02-673 Varšava, Polsko

        The Codest

      • Home
      • O nás
      • Služby
      • Case Studies
      • Vědět jak
      • Kariéra
      • Slovník

        Služby

      • To Advisory
      • Vývoj softwaru
      • Vývoj backendu
      • Vývoj frontendů
      • Staff Augmentation
      • Vývojáři backendu
      • Cloudoví inženýři
      • Datoví inženýři
      • Další
      • Inženýři QA

        Zdroje

      • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
      • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
      • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
      • Jaké jsou hlavní výzvy CTO a CIO?
      • The Codest
      • The Codest
      • The Codest
      • Privacy policy
      • Website terms of use

      Copyright © 2026 by The Codest. Všechna práva vyhrazena.

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