Правила приоритета C: Рекомендуется
Примечание
Это руководство для Vue.js устарело и требует пересмотра. Если у вас есть вопросы или предложения, пожалуйста, откройте issue.
Если существует несколько одинаково хороших вариантов, можно сделать произвольный выбор, чтобы обеспечить последовательность. В этих правилах мы описываем каждый приемлемый вариант и предлагаем выбор по умолчанию. Это значит, что вы можете не стесняться делать другой выбор в своей собственной кодовой базе, если вы последовательны и у вас есть веские причины. Пожалуйста, у вас есть веская причина! Приспособившись к общественному стандарту, вы:
- Научите свой мозг легче разбирать большинство встречающихся вам кодов сообщества
- Научитесь копировать и вставлять большинство примеров кодов сообщества без изменений
- Часто бывает, что новые сотрудники уже привыкли к предпочитаемому вами стилю кодирования, по крайней мере, в отношении Vue
Порядок опций компонента/экземпляра
Опции компонента/экземпляра должны быть упорядочены последовательно.
Это порядок по умолчанию, который мы рекомендуем для опций компонентов. Они разделены на категории, так что вы будете знать, куда добавлять новые свойства плагинов.
Глобальная осведомленность (требует знаний, выходящих за рамки компонента)
name
Опции компилятора шаблонов (изменяет способ компиляции шаблонов)
compilerOptions
Зависимости шаблона (активы, используемые в шаблоне)
components
directives
Композиция (объединяет свойства в опции)
extends
mixins
provide
/inject
Интерфейс (интерфейс компонента)
inheritAttrs
props
emits
Composition API (точка входа для использования Composition API)
setup
Локальное состояние (локальные реактивные свойства)
data
computed
События (обратные вызовы, запускаемые реактивными событиями)
watch
- События жизненного цикла (в порядке их вызова)
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
activated
deactivated
beforeUnmount
unmounted
errorCaptured
renderTracked
renderTriggered
Нереактивные свойства (свойства экземпляра, не зависящие от системы реактивности)
methods
Рендеринг (декларативное описание отрисовки компонента)
template
/render
Порядок атрибутов элемента
Атрибуты элементов (включая компоненты) должны быть упорядочены последовательно.
Это порядок по умолчанию, который мы рекомендуем для опций компонентов. Они разделены на категории, так что вы будете знать, куда добавлять пользовательские атрибуты и директивы.
Определение (предоставляет параметры компонента)
is
Отрисовка списка (создает несколько вариантов одного и того же элемента)
v-for
Условия (отображается/показывается ли элемент)
v-if
v-else-if
v-else
v-show
v-cloak
Отрисовка модификаторов (изменяет способ отображения элемента)
v-pre
v-once
Глобальная осведомленность (требует знаний, выходящих за рамки компонента)
id
Уникальные атрибуты (атрибуты, требующие уникальных значений)
ref
key
Двухстороннее связывание (комбинирование связывания и событий)
v-model
Другие атрибуты (все неопределённые связанные и несвязанные атрибуты)
События (слушатели событий компонента)
v-on
Контент (переопределяет содержимое элемента)
v-html
v-text
Пустые строки в параметрах компонентов/объектов
Вы можете добавить одну пустую строку между многострочными свойствами, особенно если параметры не помещаются на экране без прокрутки.
Когда компоненты начинают казаться тесными или трудночитаемыми, добавьте пробелы между многострочными свойствами, чтобы их было легче прочесть. В некоторых редакторах, таких как Vim, подобные опции форматирования также облегчают навигацию с помощью клавиатуры.
Плохо
js
defineProps({
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
})
const formattedValue = computed(() => {
// ...
})
const inputClasses = computed(() => {
// ...
})
Хорошо
js
defineProps({
value: {
type: String,
required: true
},
focused: {
type: Boolean,
default: false
},
label: String,
icon: String
})
const formattedValue = computed(() => {
// ...
})
const inputClasses = computed(() => {
// ...
})
Порядок элементов верхнего уровня однофайлового компонента
Однофайловые компоненты должны всегда последовательно упорядочивать теги <script>
, <template>
и <style>
, причем <style>
должен быть последним, поскольку как минимум один из двух других всегда необходим..
Плохо
template
<style>/* ... */</style>
<script>/* ... */</script>
<template>...</template>
template
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<template>...</template>
<script>/* ... */</script>
<style>/* ... */</style>
Хорошо
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>