Regras Prioridade C: Recomendado
Onde múltiplas opções igualmente boas existem, uma escolha arbitrária pode ser feita para garantir consistência. Nestas regras, descrevemos cada opção aceitável e sugerimos uma escolha padrão. Isso significa que você pode ficar à vontade para realizar uma escolha diferente em sua própria base de código, desde que você seja consistente e tenha um bom motivo. Mas por favor, tenha um bom motivo! Ao adotar o padrão da comunidade, você irá:
- Treinar seu cérebro para analisar mais facilmente a maior parte do código da comunidade que encontrar
- Ser capaz de copiar e colar a maior parte dos exemplos de código da comunidade sem modificações
- Frequentemente encontrar novos parceiros que já estão acostumados ao seu estilo de código preferido, ao menos no âmbito Vue
Ordem das opções de componente/instância
Opções de componente/instância devem ser ordenadas consistentemente.
Esta é a ordem padrão que recomendamos para opções de componente. Elas são divididas em categorias, então você saberá onde adicionar novas propriedades de plugins.
Conscientização Global (exige conhecimento além do componente)
name
Opções do Compilador de Modelo (mudam a maneira que modelos são compilados)
compilerOptions
Dependências de Modelo (recursos usados no modelo)
components
directives
Composição (mescla propriedades nas opções)
extends
mixins
provide
/inject
Interface (a interface para o componente)
inheritAttrs
props
emits
API de Composição (ponto de entrada para usar a API de Composição)
setup
Estado Local (propriedades locais reativas)
data
computed
Eventos (callbacks acionados por eventos reativos)
watch
- Eventos do Ciclo de Vida (na ordem em que são chamados)
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
activated
deactivated
beforeUnmount
unmounted
errorCaptured
renderTracked
renderTriggered
Propriedades não reativas (propriedades da instância independentes da reatividade do sistema)
methods
Interpretação (a descrição declarativa da saída do componente)
template
/render
Ordem dos atributos de elementos
Os atributos dos elementos (incluindo componentes) devem ser ordenados consistentemente.
Esta é a ordenação padrão que recomendamos para opções do componente. Elas estão divididas em categorias, então você saberá onde adicionar atributos e diretivas personalizadas.
Definição (fornece as opções do componente)
is
Interpretação de Listas (cria múltiplas variações do mesmo elemento)
v-for
Condicionais (se o elemento é interpretado/mostrado)
v-if
v-else-if
v-else
v-show
v-cloak
Modificadores de Interpetação (mudam a forma que o elemento é interpretado)
v-pre
v-once
Conscientização Global (exige conhecimento além do componente)
id
Atributos Únicos (atributos que exigem valores únicos)
ref
key
Vinculação Bidirecional (combina vinculações e eventos)
v-model
Outros Atributos (todos os atributos não especificados vinculados ou não vinculados)
Eventos (ouvintes de evento dos componentes)
v-on
Conteúdo (substituem o conteúdo do elemento)
v-html
v-text
Linhas vazias em opções de componente/instância
Você pode querer adicionar uma linha vazia entre propriedades de várias linhas, especialmente se as opções não couberem mais na sua tela sem rolagem.
Quando os componentes começam a parecer abarrotados ou difíceis de se ler, adicionar espaços entre propriedades com múltiplas linhas pode torná-lo fácil de se ler novamente. Em alguns editores, como o Vim, opções de formatação como essa podem também tornar mais fácil de se navegar com o teclado.
Bom
js
props: {
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
},
computed: {
formattedValue() {
// ...
},
inputClasses() {
// ...
}
}
js
// Não ter espaços também é bom, desde que o componente
// seja fácil de ler e de navegar.
props: {
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
},
computed: {
formattedValue() {
// ...
},
inputClasses() {
// ...
}
}
Ordem de elementos de nível superior de Componentes de Arquivo Único
Componentes de Arquivo Único devem sempre ordenar os identificadores <script>
, <template>
, e <style>
consistentemente, com o <style>
por último, porque ao menos uma das outras duas é sempre necessária.
Ruim
template
<style>/* ... */</style>
<script>/* ... */</script>
<template>...</template>
template
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>
Bom
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>