Vue.js lietotnes uzlabojumi. Daži praktiski padomi
Dominik Grzedzielski
Vecākais Software Engineer
Vue ir strauji augoša progresīva lietotāja saskarņu veidošanas sistēma. Tā ir kļuvusi par JavaScript ietvaru ar visvairāk zvaigznītēm GitHub vietnē un par visaugstāk novērtēto 2016. un 2017. gada projektu tajā pašā portālā.
Pieteikumu izveide programmā Vue pats par sevi ir ļoti vienkāršs, taču, ja vēlaties izveidot labas kvalitātes lietojumprogrammas, jums būs nedaudz sarežģītāk.
Būt daļai no The Codestkomanda un reāls aizstāvis Vue tehnoloģija, es vēlos dalīties ar dažiem padomi (nav nokopēts no oficiālajiem Vue dokumentiem), kas bez piepūles uzlabos kods kvalitāti un Vue lietojumprogrammu veiktspēja.
Vispirms izmantojiet Vue stila rokasgrāmatu un ESLint
Ieteicamais un ļoti ieteicams labākās prakses ievērošanas noteikumi - lai uzlabot kvalitāti. un koda lasāmību.
Jūs, iespējams, domājat... "Ko?! Vai man ir jāatceras visi noteikumi?" Protams, ka nav. Jūs varat izmantot ESLint, lai par šiem noteikumiem parūpētos jūsu vietā. Jums tikai viss ir pareizi jāiestata ESLint konfigurācijas failā. Es iesaku izmantot ieteicams iepriekš iestatīts jo saņemat pilnīgi bezmaksas noteikumu kopumu, kas palīdz veidot lietotnes, izmantojot labas prakses principus. Kā to iestatīt?
Pēc noklusējuma jums vajadzētu atrast paplašina atslēgu ESLint konfigurācijā un aizstāt "spraudnis:vue/essential" ar "spraudnis:vue/recommended"tas ir viss.
Protams, jāatceras daži noteikumi, jo ESLint nevar visu apstrādāt pats par sevi. Piemēram:
konsekventa nosaukuma piešķiršana,
notikumu nosaukšana kebab-case,
prefiksēšana $_namespace_ privātās īpašības spraudņos, miksīnos u. c.,
viena faila komponenta augstākā līmeņa elementu secība.
Neizmantojiet vairākus v-if
Dažreiz var būt nepieciešams nosacīti atveidot vairāk nekā 1 elementu, bet cilvēki bieži raksta kaut ko līdzīgu:
saturs
saturs
saturs
Tas nav nepieciešams, jo mēs to varam uzrakstīt elegantāk:
Bet ko darīt, ja vēlamies to veikt kā saknes elementu? Vietnē Vue, mēs nevaram izmantot šim nolūkam. Dažos gadījumos var pietikt ar iesaiņošanu divos.
Tas ir ok, bet, lai arī kā mēs to vēlētos, dažreiz mēs nevaram ietīt elementus div, piemēram, html semantikas dēļ (piem., lai arī kā mēs to vēlētos). ir jābūt tiešam pēcnācējam no
vai ). Tātad, kad mums ir jāraksta:
((( item.name ))
...un mēs redzēsim šādu kļūdu:
Mēs varam to risināt, izmantojot izmantojot JSX un funkcionālo komponentu, arī mums vajadzētu nodot boolean un tas aizstās v-if.
Komponentos nerakstiet api izsaukumu apstrādātājus
Patiesībā šis ir tikai viens no piemēriem, ko nevajadzētu darīt komponentos. Vienkārši dariet to, kas ir lokāli nepieciešams komponentu loģikā. Katra metode, kas varētu būt ārēja, būtu jānodala un jāizsauc tikai komponentēs, piemēram, biznesa loģikā.
Liela daudzuma rekvizītu vietā izmantojiet spēļu automātus.
Dažreiz pietiek ar balstu izmantošanu, bet ir arī gadījumi, kad tie nav efektīvi. Tas var notikt situācijās, kad mums būtu jāpievieno pārāk daudz rekvizītu, lai komponents darbotos tā, kā mēs vēlamies. Vienkāršākais piemērs varētu būt pogas komponents. Bez šaubām, tā ir komponente, ko var izmantot jebkurā lietojumprogrammas vietā. Aplūkosim šādu pogas komponentu.
((( teksts ))
Šajā posmā tas ir vienkāršs komponents, kas pieņem tikai teksta rekvizītu. Labi, bet ar to var nepietikt, jo mums pogā būs vajadzīgas ikonas. Šajā gadījumā mums jāpievieno vēl 2 rekvizīti (2, jo vēlamies, lai mums būtu iespēja pievienot pirms vai pēc teksta). Tātad komponents izskatīsies šādi:
((( teksts ))
Tas nav slikti, mums ir tikai 3 balsti, bet...
Ko darīt, ja mums ir nepieciešams iekraušanas indikators? Mums būtu jāpievieno vēl viens balsts. Un tas attiecas uz katru jaunu funkciju! Vai komponenšu skaita pieauguma ievērošana tagad šķiet izaicinoša? Jā, noteikti ir!
Tā vietā izmantosim spēļu automātus.
Vienkāršāk, vai ne? Labi, bet kā mēs varam iegūt ikonas pievienošanas funkciju? Tas ir ļoti vienkārši! Vienkārši izmantojiet komponentu šādi:
Atpakaļ
Nākamais
Vienkāršs veids, kā uzlabot veiktspēju
Es dalīšos ar jums ar dažiem padomiem, kurus ir patiešām viegli īstenot, lai jūs varētu uzreiz gūt labumu.
Slinkās ielādes maršruti
Dažreiz mūsu maršruti ir pieejami tikai administratoriem vai lietotājiem ar noteiktu piekļuvi, tie var būt arī mazāk apmeklēti nekā citi. Tie ir ideāli gadījumi, lai izmantotu slinko ielādes maršrutu.
Vienkārši izmantojiet bultas funkciju savā komponenta īpašumā, lai atgrieztu importa funkciju:
Pateicoties šīs komponentes slinkumam, tā tiks lejupielādēta tikai pēc pieprasījuma. Piemēram, ja mums ir komponente ar v-if, tā tiks pieprasīta tikai tad, ja komponente tiks atveidota. Tātad, ja vien v-if vērtība nav true, komponents netiks ielādēts. Tāpēc slinko importēšanu var izmantot arī attiecībā uz JavaScript faili.
Bonuss: Izmantojot Vue CLI 3+, katrs laiski ielādēts resurss pēc noklusējuma tiek iepriekš ielādēts!
Atribūtu rekvizītu vietā izmantojiet caurspīdīgus apvalkus
Aplūkojiet šādu komponentu:
Bez jebkādām problēmām mēs to varam izmantot šādi:
vai
Tas darbojas, jo Vue ļauj komponentei nodot html atribūtus, pat ja tie nav deklarēti kā rekvizīti. HTML atribūti tiek piemēroti komponenta saknes elementam (šajā gadījumā - ievades elementam).
Problēma rodas, kad mēs vēlamies paplašināt mūsu ievades komponentu, jo tas varētu izskatīties šādi:
nedarbosies tā, kā mēs vēlamies, jo tips un vietne tiks piemērota div (saknes elementam), un tam nav jēgas. Tāpēc mums ar to ir jātiek galā, jo mēs vēlamies pievienot mūsu atribūtus ievades elementam. Jūsu pirmā doma var būt "pievienosim vajadzīgos rekvizītus!", un, protams, tas darbosies, bet... ko darīt, ja mēs vēlamies izmantot tips, automātiskā papildināšana, vietvārds, autofokuss, invalīdiem, ievades režīms, utt., tad mums ir jādefinē rekvizīti katram html atribūtam. Man personīgi šī garā metode nepatīk, tāpēc meklēsim kaut ko labāku!
Mēs varam risināt visu problēmu tikai divas rindiņas.
Mēs varam izmantot v-bind="$attrs" un nodot atribūtus tieši nedeklarējot milzīgas summas rekvizītiem. Atcerieties arī par opcijas pievienošanu inheritAttrs: false lai atslēgtu atribūtu nodošanu saknes elementam. Iesim nedaudz tālāk: ko darīt, ja mums ir nepieciešams pievienot notikumu klausītājus šai ievadei? Atkal, to varētu apstrādāt ar rekvizītiem vai pielāgotiem notikumiem, taču ir labāks risinājums.
Ir jauns aprēķināts īpašums, kas atgriež komponentu klausītājiem un pievieno ievades klausītāju. Mēs izmantojam šo aprēķināto ievadi, vienkārši rakstot v-on="klausītāji".
Izmantot skatītāju ar tūlītēju opciju, nevis izveidoto āķi un skatītāju kopā.
Mēs bieži vien iegūstam dažus datus par izveidoto (vai uzstādīto) āķi, bet pēc tam mums ir nepieciešams iegūt šos datus ar katru īpašības maiņu, piemēram, lapas lapu lapu kārtējo lapu. Daži to mēdz pierakstīt šādi:
Protams, tas darbojas, bet... Tā nav labākā pieeja, pat ne labākā. Tātad, pārbaudīsim, kā mēs varam to pārveidot, Piemērs ne tik slikta pieeja:
Iepriekš minētā versija ir labāka, jo nav nepieciešama cita metode, mēs tikai nosaucām metodi, kas jāizsauc, lai mainītu watchedProperty.
Vēl labāka pieeja:
Mēs atbrīvojāmies no izveidotā āķa. Pievienojot opciju "tūlītējs", mēs šo komponenta fetchData metodi izsaucam uzreiz pēc novērošanas sākuma (tas ir nedaudz pirms izveidotā āķa un pēc beforeCreated), tāpēc to var izmantot izveidotā āķa vietā.
Vue.js padomu kopsavilkums
Šie padomi nepadarīs jūsu pieteikumu nevainojamu, taču, tos izmantojot, ātri uzlabot jūsu koda kvalitāti.. Tāpat es ceru, ka jūs atradīsiet kaut ko interesantu iepriekš minētajos piemēros.
Ņemiet vērā, ka daži no tiem tika vienkāršoti raksta vajadzībām.