RouterView и RouterLink — два основных компонента Vue Router. RouterView определяет место в шаблоне, где будет отображаться компонент текущего маршрута. RouterLink создаёт навигационные ссылки, которые работают без перезагрузки страницы.
Ключевые аспекты
RouterView — компонент-плейсхолдер для отображения маршрутов
RouterLink — компонент для создания SPA-ссылок
to — проп RouterLink для указания целевого маршрута
name — проп RouterView для именованных представлений
Забывают добавить RouterView — компоненты маршрутов не отображаются
Используют <a href> вместо RouterLink — теряется SPA-поведение
Размещают несколько RouterView без именования — конфликты отображения
Не импортируют компоненты в script setup при использовании PascalCase
Рекомендации
Используйте RouterView как точку входа для страниц приложения
RouterLink предпочтительнее программной навигации для обычных ссылок
Для сложных layout применяйте именованные RouterView
Используйте v-slot для анимаций переходов между страницами
Импортируйте компоненты явно для лучшей читаемости кода
Введение и проблематика
Vue Router предоставляет два ключевых компонента для работы с маршрутизацией: RouterView и RouterLink. Без понимания этих компонентов невозможно построить навигацию в Vue-приложении. RouterView определяет, где отображать содержимое маршрута, а RouterLink обеспечивает переходы между страницами.
RouterView и RouterLink работают в паре: RouterLink указывает куда перейти, а RouterView показывает что отобразить. Это основа всей навигации в Vue-приложениях.
RouterView — отображение маршрутов
Базовое использование
RouterView — это компонент-плейсхолдер. Vue Router рендерит в него компонент, соответствующий текущему URL:
vue
<scriptsetup>import { RouterView } from'vue-router'</script><template> <header>Шапка сайта</header><!-- Сюда будет рендериться компонент текущего маршрута --> <RouterView /> <footer>Подвал сайта</footer></template>
<template><!-- Простой путь --> <RouterLinkto="/users">Пользователи</RouterLink><!-- С query параметрами --> <RouterLinkto="/search?q=vue">Поиск</RouterLink></template>
Простой синтаксис
Подходит для статических путей
Легко читается
Props компонента RouterLink
vue
<template><!-- Основной проп — целевой маршрут --> <RouterLinkto="/about">О нас</RouterLink><!-- Заменить запись в истории (без возврата назад) --> <RouterLinkto="/login"replace>Войти</RouterLink><!-- Кастомный класс для активной ссылки --> <RouterLinkto="/home"active-class="active"> Главная </RouterLink><!-- Класс для точного совпадения --> <RouterLinkto="/"exact-active-class="exact"> Главная </RouterLink></template>
При использовании script setup рекомендуется PascalCase с явным импортом — это обеспечивает лучшую поддержку TypeScript и tree-shaking.
Вопросы интервьюера
Q: Что такое RouterView?
Компонент-плейсхолдер, который отображает компонент текущего маршрута. Определяет место в шаблоне, где будет рендериться содержимое страницы.
Q: Чем RouterLink отличается от обычной ссылки?
RouterLink перехватывает клик и выполняет навигацию без перезагрузки страницы, сохраняя состояние SPA. Также автоматически добавляет классы для активного состояния.
Q: Как добавить анимацию переходов между страницами?
Использовать v-slot на RouterView для доступа к компоненту и обернуть его в <transition>.
Q: Можно ли использовать несколько RouterView на странице?
Да, с помощью именованных RouterView (проп name) и указания components вместо component в конфигурации маршрута.