The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2020-10-30
Programinės įrangos kūrimas

Vue.js programos tobulinimas. Keletas praktinių patarimų

The Codest

Dominik Grzedzielski

Vyresnysis Software Engineer

Vue yra sparčiai populiarėjanti progresyvi vartotojo sąsajų kūrimo sistema. Ji tapo daugiausiai žvaigždučių "GitHub" portale turinčia JavaScript sąranka ir daugiausiai žvaigždučių turinčiu 2016 ir 2017 m. projektu tame pačiame portale.

Programų kūrimas Vue yra labai paprasta, tačiau jei norite kurti geros kokybės programas, teks įveikti šiek tiek daugiau iššūkių.

Dalyvavimas The Codest komanda ir tikras advokatas Vue technologija, noriu pasidalyti kai kuriais patarimai (nekopijuota iš oficialių Vue dokumentų), kuri be vargo pagerins kodas kokybę ir Vue programų našumas.

Pirmiausia taikykite Vue stiliaus vadovą ir ESLint

Nenoriu kartoti to, kas jau buvo pasakyta. Vue dokumentuose yra stiliaus vadovas:
Vue 2 dokumentai - stiliaus vadovas arba
Vue 3 dokumentai - stiliaus vadovas

Čia rasite keturias taisyklių kategorijas. Mums tikrai rūpi trys iš jų:

  • Esminis taisyklės, neleidžiančios mus nuo klaidų,
  • Rekomenduojama ir primygtinai rekomenduojama geriausios praktikos laikymosi taisyklės - į gerinti kokybę. ir kodo skaitomumą.

Galite pagalvoti... "Ką?! Ar aš turiu prisiminti kiekvieną taisyklę?" Žinoma, nereikia. Galite naudoti "ESLint", kad šiomis taisyklėmis pasirūpintų už jus. Jums tereikia viską tinkamai nustatyti "ESLint" konfigūracijos faile. Siūlau naudoti rekomenduojama iš anksto nustatytas nes gausite visiškai nemokamą taisyklių rinkinį, kuris padės jums kurti programėles pagal gerąją praktiką. Kaip ją nustatyti?

Pagal numatytuosius nustatymus turėtumėte rasti išplečia ESLint konfigūracijos raktą ir pakeiskite "plugin:vue/essential" su "plugin:vue/recommended"ir viskas.

Žinoma, reikia prisiminti keletą taisyklių, nes "ESLint" negali visko atlikti pati. Pavyzdžiui:

  • nuoseklus pavadinimų suteikimas,
  • įvykių pavadinimai kebab-case,
  • priešdėlio $_namespace_ privačios įskiepių, mišinių ir kt. savybės,
  • vieno failo komponento aukščiausio lygio elementų tvarka.

Nenaudokite kelių v-if

Kartais gali prireikti sąlygiškai atvaizduoti daugiau nei 1 elementą, tačiau žmonės dažnai rašo kažką panašaus:

turinys

turinys

turinys

Jis nereikalingas, nes galime jį parašyti elegantiškiau:

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

Tačiau ką daryti, jei norime tai padaryti kaip šakninį elementą? Svetainėje Vue, negalime naudoti šiam tikslui. Kai kuriais atvejais gali pakakti suvynioti į divą.

Tai gerai, tačiau, kad ir kaip norėtume, kartais negalime apvynioti elementų į div, pavyzdžiui, dėl html semantikos (pvz.

  • turi būti tiesioginis
      arba
        ). Taigi, kai turime rašyti:

         
      1. ((( item.name ))
      2. ...ir pamatysime tokią klaidą:

        Vue js kodas

        Galime spręsti šią problemą naudojant JSX ir funkcinį komponentą, taip pat turėtume perduoti loginį simbolį ir jis pakeis v-if.

        Nerašykite api skambučių tvarkyklių komponentuose

        Tiesą sakant, tai tik vienas iš pavyzdžių, ko nereikėtų daryti komponentuose. Komponentų logikoje tiesiog darykite tai, kas būtina vietoje. Kiekvienas metodas, kuris galėtų būti išorinis, turėtų būti atskirtas ir kviečiamas tik komponentuose, pvz., verslo logikoje.

        Pavyzdys:

        Vietoj tokio metodo:

        () (
        this.fetchArticles();
        ),
        metodai: (
         async fetchArticles() (
          try (
            const duomenys = await axios.get(url);
            this.articles = data.articles;
            ) catch (e) (
            // tvarkyti klaidą
            )
          )
        )

        Parašykite kažką panašaus - tiesiog iškvieskite tinkamą metodą, kuris grąžins API rezultatus:

         async fetchArticles() (
           try (
             this.articles = await ArticlesService.fetchAll();
           ) catch (e) (
             // tvarkyti klaidą
           )
          )

        Naudokite laiko tarpsnius, o ne didelį kiekį rekvizitų

        Kartais užtenka naudoti atramas, tačiau pasitaiko atvejų, kai jos nėra veiksmingos. Taip gali nutikti, kai norint, kad komponentas veiktų taip, kaip norime, reikėtų pridėti per daug rekvizitų. Paprasčiausias pavyzdys galėtų būti mygtuko komponentas. Be jokios abejonės, tai komponentas, kurį galima naudoti bet kurioje programos vietoje. Taigi apsvarstykime tokį mygtuko komponentą kaip šis.

        
        (( tekstas ))

        Šiame etape tai paprastas komponentas, kuris priima tik teksto rekvizitą. Gerai, bet to gali nepakakti, nes mums reikės piktogramų mygtuke. Tokiu atveju turime pridėti dar 2 rekvizitus (2, nes norime turėti galimybę pridėti prieš arba po teksto). Taigi komponentas atrodys taip:

        
        (( tekstas ))

        Nėra blogai, turime tik 3 atramas, bet...

        Ką daryti, jei reikia krovimo indikatoriaus? Tuomet tektų pridėti dar vieną atramą. Ir taip yra su kiekviena nauja funkcija! Ar dabar neatsilikti nuo komponentų skaičiaus augimo skamba kaip iššūkis? Taip, tikrai taip!

        Vietoj to naudokime laiko tarpsnius.

        Paprasčiau, tiesa? Gerai, bet kaip galime gauti piktogramos pridėjimo funkciją? Tai labai paprasta! Tiesiog naudokite komponentą taip:

        Atgal
        
        Kitas

        Lengvas būdas pagerinti našumą

        Pasidalysiu keliais patarimais, kuriuos tikrai lengva įgyvendinti, kad iš karto gautumėte naudos.

        Lėtosios apkrovos maršrutai

        Kartais turime maršrutų, kurie prieinami tik administratoriams arba naudotojams, turintiems tam tikrą prieigą, jie taip pat gali būti lankomi rečiau nei kiti. Tai puikūs atvejai naudoti tingaus įkėlimo maršrutą.

        Tiesiog naudokite rodyklės funkciją savo komponento savybėje, kad grąžintumėte importo funkciją:

         eksportas pagal nutylėjimą naujas VueRouter (
           (
             mode: 'history',
             routes: [
               (
                 kelias: "/landing",
                 component: () => import('../pages/p-welcome'),
                 vardas: "welcome
               ),
          ...

        Vietoj:

        importuoti PWelcome iš '@/pages/p-welcome';
        
        export default new VueRouter (
        (
        mode: 'history',
        routes: [
        (
        kelias: "/landing",
        komponentas: // tiesiog importuotas komponentas
        pavadinimas: "welcome
        ),

        Lėtas Vue komponentų krovimas

        Panaši situacija gali nutikti ir su Vue komponentai. Galime tingiai importuoti vieno failo komponentus, pvz:

        const lazyComponent = () => import('pathToComponent.vue')
        export default (
        components: (lazyComponent )
        )
        
        // Kita sintaksė
        export default (
        components: (
        lazyComponent: () => import('pathToComponent.vue')
        )
        )

        Dėl šio komponento tingaus įkėlimo jis bus atsisiunčiamas tik tada, kai bus paprašytas. Pavyzdžiui, jei turime komponentą su v-if, jo bus prašoma tik tada, kai komponentas bus atvaizduojamas. Taigi, jei v-if reikšmė nėra true, komponentas nebus įkeltas. Štai kodėl tingus importavimas gali būti naudojamas ir JavaScript failai.

        Premija: Naudojant "Vue CLI 3+", kiekvienas tingiai įkeltas išteklius pagal nutylėjimą yra iš anksto parenkamas!

        vue js kūrimas

        Vietoj atributų rekvizitų naudokite skaidrius apvalkalus

        Panagrinėkite tokį komponentą kaip šis:

        Be jokių problemų galime jį naudoti taip:

        arba


        Tai veikia, nes Vue leidžia komponentui perduoti html atributus, net jei jų nedeklaravote kaip rekvizitų. HTML atributai taikomi komponento šakniniam elementui (šiuo atveju įvesties elementui).

        Problema iškyla, kai norime išplėsti įvesties komponentą, nes jis gali atrodyti taip:

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

        Dabar, naudodami komponentą šiuo būdu:

        neveiks taip, kaip mes norime, nes tipas ir žymeklis bus taikomi div (šakniniam elementui), o tai neturi jokios prasmės. Taigi, turime su tuo susidoroti, nes norime pridėti savo atributus prie įvesties elemento. Pirmoji jūsų mintis gali būti "pridėkime reikiamus rekvizitus!" ir, žinoma, tai suveiks, bet... ką daryti, jei norime naudoti tipas, automatinio užbaigimo funkcija, Vietoj, automatinis fokusavimas, neįgalieji, įvesties režimas, ir t. t., tada turime apibrėžti kiekvieno html atributo rekvizitus. Man asmeniškai šis ilgas metodas nepatinka, todėl ieškokime ko nors geresnio!

        Visą problemą galime spręsti tik dvi eilutės.

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

        Galime naudoti v-bind="$attrs" ir perduoti atributus tiesiogiai į nedeklaruojant didžiulių rekvizitų kiekių. Taip pat nepamirškite pridėti parinktį inheritAttrs: false išjungti atributų perdavimą šakniniam elementui. Eikime šiek tiek toliau: ką daryti, jei prie šios įvesties reikia pridėti įvykių klausytojų? Vėlgi, tai būtų galima tvarkyti rekvizitais arba pasirinktiniais įvykiais, tačiau yra geresnis sprendimas.

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

        Yra nauja apskaičiuota savybė, kuri grąžina klausytojų komponentą ir prideda įvesties klausytoją. Mes naudojame tą apskaičiuotą įvestį tiesiog rašydami v-on="klausytojai".

        Naudokite stebėtoją su parinktimi nedelsiant, o ne sukurtą kabliuką ir stebėtoją kartu

        Dažnai tam tikrus duomenis gauname iš sukurto (arba sumontuoto) kabliuko, tačiau vėliau tuos duomenis reikia gauti kiekvieną kartą keičiant savybę, pvz., dabartinį puslapio puslapį. Kai kurie linkę tai užrašyti taip:

        Žinoma, tai veikia, bet... Tai nėra pats geriausias būdas, net ne pats geriausias. Taigi, patikrinkime, kaip mes galime tai refaktorizuoti, Ne tokio blogo požiūrio pavyzdys:

        Aukščiau pateiktas variantas yra geresnis, nes kito metodo nereikia, mes tik įvardijome metodą, kuris turėtų būti iškviestas norint pakeisti watchedProperty.

        Dar geresnis būdas:

        Atsikratėme sukurto kabliuko. Pridėję parinktį "immediate", šį komponento fetchData metodą iškviečiame iš karto po stebėjimo pradžios (tai šiek tiek anksčiau už sukurtąjį kabliuką ir po beforeCreated), todėl jį galima naudoti vietoj sukurtojo kabliuko.

        Vue.js patarimų santrauka

        Šie patarimai nepadarys jūsų paraiškos tobulos, tačiau jų naudojimas padės greitai pagerinti kodo kokybę.. Taip pat tikiuosi, kad pirmiau pateiktuose pavyzdžiuose rasite ką nors įdomaus.

        Atkreipkite dėmesį, kad kai kurie iš jų buvo supaprastinti straipsnio tikslais.

        Skaityti daugiau:

        JavaScript yra visiškai miręs. Kažkoks vyrukas internete

        Išsamesnė populiariausių React kabliukų apžvalga

        Programinės įrangos projektai, kuriuose galite naudoti JavaScript

  • Susiję straipsniai

    Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
    Programinės įrangos kūrimas

    Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

    Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

    GERIAUSIAS
    Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
    Programinės įrangos kūrimas

    Kaip padidinti savo Dev komandą neprarandant produkto kokybės

    Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

    GERIAUSIAS
    Programinės įrangos kūrimas

    Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

    Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

    GERIAUSIAS
    Programinės įrangos kūrimas

    10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

    Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

    thecodest
    Įmonių ir didinimo sprendimai

    "Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

    Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

    thecodest

    Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

      Apie mus

      The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

      Jungtinė Karalystė - būstinė

      • 303B biuras, 182-184 High Street North E6 2JA
        Londonas, Anglija

      Lenkija - vietiniai technologijų centrai

      • Fabryczna biurų parkas, Aleja
        Pokoju 18, 31-564 Krokuva
      • Brain Embassy, Konstruktorska
        11, 02-673 Varšuva, Lenkija

        The Codest

      • Pagrindinis
      • Apie mus
      • Paslaugos
      • Case Studies
      • Sužinokite, kaip
      • Karjera
      • Žodynas

        Paslaugos

      • Patariamoji tarnyba
      • Programinės įrangos kūrimas
      • Galinės dalies kūrimas
      • Priekinės dalies kūrimas
      • Staff Augmentation
      • Atgalinės versijos kūrėjai
      • Debesų inžinieriai
      • Duomenų inžinieriai
      • Kita
      • QA inžinieriai

        Ištekliai

      • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
      • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
      • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
      • Kokie yra svarbiausi CTO ir CIO iššūkiai?
      • The Codest
      • The Codest
      • The Codest
      • Privacy policy
      • Website terms of use

      Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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