Введение
При разработке большого приложения всегда полезно разбить его на более мелкие компоненты, чтобы упростить чтение, структурирование и обслуживание кода. Большинство новичков в Vue понимают, что такое компоненты, по крайней мере, концептуально, но они могут не понимать, что они могут и чего не могут делать в полной мере.
В этом руководстве мы рассмотрим, что такое компонент в Vue, как он работает, как передавать через него данные и события и многое другое.
Что такое компонент Vue?
Компоненты — это многократно используемые экземпляры элементов Vue, которые включают шаблоны, стили и элементы JavaScript. Каждый компонент является «своим», подобно тому, как каждый элемент HTML является «своим», и как компоненты Vue, так и элементы HTML позволяют нам использовать их в качестве строительных блоков для веб-страниц.
Вы можете думать о компонентах Vue как о HTML-элементах, наполненных JavaScript, которые вы можете определять и управлять ими самостоятельно.
Типичное приложение Vue состоит из множества компонентов, которые можно использовать повторно столько раз, сколько необходимо.
Например, на обычном веб-сайте есть разделы, которые появляются на всех страницах — панель навигации, шапка, футер и так далее. Поэтому считается хорошей практикой делать каждый из них отдельным компонентом. Таким образом, мы создаем хорошо структурированный, читаемый, повторно используемый и легко поддерживаемый код:
Как создать компонент Vue
Существует два основных способа создания компонента Vue, в зависимости от того, как был создан наш проект: с настройкой сборки или без нее. В первом случае каждый компонент хранится в отдельном файле. Во втором случае в одном файле может быть несколько компонентов.
Примечание: Объясняя, что такое настройка сборки и как это сделать выходит далеко за рамки этого руководства. Если вы хотите узнать больше об основах Vue, лучше всего начать с "Быстрый старт" статья из официальной документации Vue.
Создание компонентов Vue с помощью настройки сборки
Большинство проектов создаются с использованием настройка сборки, что позволяет нам создавать однофайловые компоненты (SFC) – выделенные файлы компонентов с .vue
расширение. Это позволяет нам инкапсулировать шаблон, логику и стиль компонента Vue в одном файле:
<!-- Vue-specific JavaScript -->
<script> export default { data() { return { title: 'Hello World!' } } }
</script> <!-- HTML Template -->
<template> <div> <p class="title">{{ title }}</p> </div>
</template> <!-- CSS Styling -->
<style>
.title { color: red;
}
</style>
Примечание: Чтобы избежать конфликтов с существующими и будущими элементами HTML, всегда лучше использовать имена из нескольких слов, а не имена из одного слова при именовании наших компонентов. Это не относится к встроенным компонентам, таким как корневой компонент (App
, Transition
, и так далее).
Создание компонентов Vue без настройки сборки
Если вы по какой-либо причине не можете использовать менеджер пакетов, такой как npm
чтобы установить Vue на свой компьютер, вы все равно можете использовать Vue в своем приложении. Альтернатива построению Vue с использованием npm
заключается в установке Vue через Сеть доставки контента (CDN) прямо в вашем приложении. Давайте просто быстро рассмотрим этот способ создания компонента Vue.
Установка Vue без сборки позволит нам использовать специфичные для Vue функции, как мы это делаем с обычным JavaScript. Синтаксис чем-то похож на то, что мы видели в обычных SFC:
export default { data() { return { title: 'Hello World!' } }, template: ` <div> <p class="title">{{ title }}</p>. </div>`
}
В этом руководстве мы будем использовать Синтаксис SFC, так как это наиболее часто используемый метод создания компонентов.
Как зарегистрировать компоненты в Vue
До сих пор мы видели, как создавать компоненты в Vue. Следующим шагом будет использование этих компонентов в другом компоненте. (иерархия родитель-потомок).
Для этого мы должны сначала зарегистрировать компоненты, которые хотим использовать. Эта регистрация влечет за собой импорт и последующую регистрацию компонентов. Для этого есть два варианта — Глобальный и местная регистрация.
Компоненты Vue — глобальная регистрация
Глобально зарегистрированные компоненты, как следует из названия, доступны глобально, что означает, что их можно использовать в любом компоненте нашего приложения без необходимости их повторного импорта. Это достигается путем регистрации компонента с помощью app.component()
Метод:
import ChildComponent from './App.vue' app.component('ChildComponent', ChildComponent)
В ситуации, когда у нас много компонентов, мы можем цепь их таким образом:
app .component('ChildComponent', ChildComponent) .component('ProfileComponent', ProfileComponent)
После того, как мы зарегистрировали наши компоненты, мы можем использовать их в шаблоне любого компонента в этом приложении, используя следующий синтаксис:
<ChildComponent/>
<ProfileComponent/>
Компоненты Vue — локальная регистрация
В большинстве случаев мы будем использовать локальную регистрацию, потому что это позволяет нам ограничивать доступность наших зарегистрированных компонентов. Импортируя эти компоненты, а затем добавляя их в components
вариант выполняет это:
<script>
import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }
}
</script> <template> <ChildComponent />
</template>
При именовании компонентов используйте ВерблюжийЧехол чтобы было понятно, что это компонент Vue, а не собственный элемент HTML в шаблонах. Это также упрощает импорт и регистрацию компонентов в JavaScript.
Примечание: Для ссылки на наш зарегистрированный компонент в шаблоне мы обычно используем ВерблюжийЧехол or Шашлык случая теги - <MyComponent />
or <my-component />
, Соответственно.
Как передавать данные через компоненты Vue
Одним из преимуществ создания компонентов является возможность повторного использования кода, делая его модульным.
Предположим, мы создаем компонент профиля пользователя, который должен получать данные каждого учащегося со страницы профиля; в этом случае мы должны передать эти данные из компонента профиля (родительский компонент) в компонент профиля пользователя (дочерний компонент), и мы будем использовать свойства.
Реквизит
Реквизиты — это настраиваемые атрибуты, которые мы можем зарегистрировать в компоненте, поэтому мы можем передавать данные из родительского компонента в дочерний, используя props
опция в теге script:
<script>
export default { props: { title: String, }
}
</script> <template> <h4>{{ title }}</h4>
</template>
Примечание: Вы можете узнать больше о свойствах и о том, как передавать различные типы данных из родительского компонента в дочерний компонент в «Руководство по реквизитам Vue».
Слотов
Слоты Vue — это зарезервированные пространства, которые позволяют нам передавать контент любого типа из одного компонента в другой. Это дает более централизованный контроль, чем props, потому что, в отличие от props, родительский компонент управляет содержимым внутри дочернего компонента. Например, мы могли бы сделать следующую кнопку:
<!-- my-button.vue -->
<template> <button class="btn btn-style"> <slot>Click Me</slot> </button>
</template>
Затем мы можем использовать этот компонент везде, где захотим, и дать ему желаемое содержимое. Отказ дать ему содержимое означает, что он будет использовать значение по умолчанию, которое мы ему дали (Click Me):
<!-- my-form.vue -->
<template> <my-button> Submit Form <img src="/img/icons/arrow-icon.jpg"> </my-button>
</template>
Как создавать события из компонентов Vue
Мы узнали, что реквизиты используются для отправки данных из родительского компонента в дочерний компонент. Но мы могли бы задаться вопросом, есть ли способ отправить что-то из дочернего компонента в родительский компонент. И ответ Да, события также могут быть отправлены из дочернего компонента в родительский компонент.
Ознакомьтесь с нашим практическим руководством по изучению Git с рекомендациями, принятыми в отрасли стандартами и прилагаемой памяткой. Перестаньте гуглить команды Git и на самом деле изучить это!
Предположим, у нас есть родительский компонент (App.vue
), который содержит один дочерний компонент (MyBlogPost.vue
). Кроме того, дочерний компонент содержит кнопку, которая должна изменить заголовок.
Предположим, мы хотим изменить заголовок нашей страницы при нажатии кнопки, чтобы сработала функция:
<!-- App.vue -->
<script>
import MyBlogPost from './BlogPost.vue' export default { components: { MyBlogPost }, data() { return { title: "Hello World" } }, methods:{ changeText: function(){ this.title = "New Title" } }
}
</script> <template> <div> <MyBlogPost :title="title" @change-text=changeText></MyBlogPost> </div>
</template>
И дочерний компонент будет выглядеть так:
<!-- MyBlogPost.vue -->
<script>
export default { props: ['title'], emits: ['change-text']
}
</script> <template> <div class="blog-post"> <h4>{{ title }}</h4> <button @click="$emit('change-text')">Change Title</button> </div>
</template>
Заключение
В этом руководстве мы узнали, как работать с компонентами в Vue, что важно для всех, кто использует Vue. Мы также узнали, как отправлять и получать данные, а также как генерировать события.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: https://stackabuse.com/introduction-to-vue-components/
- 1
- 10
- 7
- 9
- a
- способность
- О нас
- выполнено
- на самом деле
- Оповещение
- Все
- позволяет
- альтернатива
- всегда
- и
- Другой
- ответ
- кто угодно
- откуда угодно
- приложение
- появиться
- Применение
- Применить
- гайд
- Атрибуты
- свободных мест
- доступен
- основной
- Основы
- , так как:
- Новичкам
- Преимущества
- ЛУЧШЕЕ
- Beyond
- Блоки
- граница
- Ломать
- строить
- Строительство
- встроенный
- кнопка
- не могу
- случаев
- случаев
- централизованная
- изменение
- ребенок
- Очистить
- код
- обычно
- компонент
- компоненты
- Концептуально
- заключение
- считается
- содержит
- содержание
- контроль
- контрольная
- может
- Создайте
- создали
- Создающий
- CSS
- изготовленный на заказ
- данным
- преданный
- По умолчанию
- поставка
- в зависимости
- развивающийся
- различный
- непосредственно
- документации
- дело
- вниз
- Dropbox
- каждый
- легче
- легко
- элементы
- включить
- позволяет
- существенный
- События
- Каждая
- пример
- существующий
- объясняя
- расширение
- Ошибка
- Файл
- Файлы
- Во-первых,
- Фокус
- после
- форма
- от
- полностью
- функция
- функциональные возможности
- Более того
- будущее
- идти
- Дайте
- дает
- Глобальный
- ГЛОБАЛЬНО
- Go
- хорошо
- инструкция
- практический
- имеющий
- иерархия
- зависать
- Как
- How To
- HTML
- HTTPS
- ICON
- идея
- Импортировать
- импортирующий
- in
- включают
- включены
- устанавливать
- Введение
- IT
- JavaScript
- большой
- УЧИТЬСЯ
- узнали
- изучение
- LG
- локальным
- посмотреть
- выглядит как
- машина
- сделанный
- поддерживать
- Ремонтопригодный
- сделать
- ДЕЛАЕТ
- Создание
- менеджер
- многих
- означает
- метод
- может быть
- модульный
- БОЛЕЕ
- самых
- с разными
- имя
- имена
- именования
- родной
- потребности
- сеть
- Новые
- следующий
- многочисленный
- Официальный представитель в Грузии
- ONE
- Опция
- Опции
- собственный
- пакет
- Выполнять
- Часть
- одноцветный
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- практическое
- практика
- Профиль
- Проект
- проектов
- САЙТ
- быстро
- Читать
- причина
- Получать
- Red
- зарегистрироваться
- зарегистрированный
- регистрирующий
- Регистрация
- зарезервированный
- многоразовый
- кольцо
- корень
- сфера
- Во-вторых
- разделах
- отдельный
- Shadow
- аналогичный
- одинарной
- ситуация
- слоты
- меньше
- So
- удалось
- в некотором роде
- пространства
- стандартов
- Начало
- Шаг
- По-прежнему
- Stop
- хранить
- Структура
- "Студент"
- отправить
- такие
- предполагаемый
- SVG
- синтаксис
- TAG
- взять
- шаблон
- шаблоны
- Ассоциация
- следовательно
- задача
- Через
- раз
- Название
- в
- слишком
- переход
- срабатывает
- правда
- Типы
- типичный
- типично
- понимать
- us
- использование
- Информация о пользователе
- ценностное
- Ve
- с помощью
- Vue
- способы
- Web
- Вебсайт
- Что
- Что такое
- который
- будете
- в
- без
- Работа
- работает
- Мир
- XML
- Ты
- ВАШЕ
- себя
- зефирнет