Pravidla priority C: Doporučené
Tam, kde existuje více stejně dobrých možností, lze pro zajištění konzistence vybrat libovolnou z nich. V těchto pravidlech popisujeme každou přijatelnou možnost a navrhujeme výchozí variantu. To znamená, že se můžete ve své vlastní kódové bázi volně rozhodnout, pokud budete konzistentní a máte pro to dobrý důvod. Ale mějte prosím dobrý důvod! Přizpůsobením se standardu komunity budete:
- trénovat svůj mozek, aby snadněji analyzoval většinu kódu v rámci Vue komunity, se kterým se setkáte
- umět zkopírovat a vložit většinu příkladů kódu v rámci Vue komunity bez dalších úprav
- častěji nacházet nové zaměstnance, kteří jsou již zvyklí na váš styl kódování, alespoň pokud jde o Vue
Pořadí možností nastavení komponent/instancí
Možnosti nastavení komponent/instancí (options) by měly být řazeny konzistentně.
Toto je výchozí pořadí, které doporučujeme pro možnosti nastavení komponent. Jsou rozděleny do kategorií, takže budete vědět, kam přidat nová nastavení z pluginů.
Globální povědomí (vyžaduje znalost mimo komponentu)
name
Nastavení kompilátoru šablony (mění způsob kompilace šablon)
compilerOptions
Závislosti šablon (prvky (assets) použité v šabloně)
components
directives
Kompozice (slučují do možností nastavení další vlastnosti)
extends
mixins
provide
/inject
Interface (rozhranní komponenty)
inheritAttrs
props
emits
Composition API (vstupní bod pro použití Composition API)
setup
Lokální stav (state) (lokální reaktivní proměnné)
data
computed
Události (events) (callbacky vyvolávané reaktivními prvky)
watch
- Události životního cyklu (v pořadí, v jakém jsou volány)
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
activated
deactivated
beforeUnmount
unmounted
errorCaptured
renderTracked
renderTriggered
Nereaktivní vlastnosti (vlastnosti instance nezávislé na systému reaktivity)
methods
Vykreslování (rendering) (deklarativní popis výstupu komponenty)
template
/render
Pořadí atributů elementů
Atributy elementů (včetně komponent) by měly být řazeny konzistentně.
Toto je výchozí pořadí, které doporučujeme pro atributy komponent. Jsou rozděleny do kategorií, takže budete vědět, kam přidat vlastní atributy a příkazy.
Definice (poskytuje možnosti komponent)
is
Vykreslování seznamu (vytváří více variant stejného prvku)
v-for
Podmínky (zda má být element vykreslen/ukázán)
v-if
v-else-if
v-else
v-show
v-cloak
Modifikátory vykreslení (mění způsob vykreslování elementu)
v-pre
v-once
Globální povědomí (vyžaduje znalost mimo komponentu)
id
Unikátní atributy (attributy, které vyžadují unikátní hodnoty)
ref
key
Two-Way Binding (kombinace přiřazení hodnoty (binding) a událostí (events))
v-model
Jiné atributy (všechny nespecifikované vázané i nevázané atributy)
Události (event-listenery komponenty)
v-on
Obsah (přepisují obsah elementu)
v-html
v-text
Prázdné řádky v možnostech nastavení komponenty/instance
Možná budete chtít přidat jeden prázdný řádek mezi víceřádkové vlastnosti, zejména pokud se možnosti již nevejdou na vaši obrazovku bez posouvání.
Když komponenty začnou vypadat stísněně nebo obtížně čitelné, přidání mezer mezi víceřádkové vlastnosti může usnadnit jejich opětovné procházení. V některých editorech jako Vim, mohou tyto varianty formátování také usnadnit navigaci pomocí klávesnice.
Špatně
js
defineProps({
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
})
const formattedValue = computed(() => {
// ...
})
const inputClasses = computed(() => {
// ...
})
Dobře
js
defineProps({
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
})
const formattedValue = computed(() => {
// ...
})
const inputClasses = computed(() => {
// ...
})
Pořadí hlavních sekcí Single-file komponenty (SFC)
Single-File komponenty (SFC) by měly vždy řadit tagy sekcí <script>
, <template>
a <style>
konzistentně, přičemž <style>
by měl být poslední, protože je vždy nezbytný jeden ze dvou zbylých.
Špatně
template
<style>/* ... */</style>
<script>/* ... */</script>
<template>...</template>
template
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>
Dobře
template
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
template
<!-- ComponentA.vue -->
<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>