В Vue Router alias позволяет создавать
альтернативные URL для одного и того же маршрута. Он отличается от
перенаправления (redirect) тем, что alias не меняет
фактический путь маршрута в адресной строке при навигации. То есть,
компонент рендерится так же, как при использовании основного пути, но
URL отображает альтернативный путь. Alias удобен для создания “красивых”
URL, поддержания обратной совместимости или предоставления нескольких
ссылок на один и тот же компонент.
Alias задается в объекте маршрута через свойство
alias:
import { createRouter, createWebHistory } from 'vue-router';
import UserProfile from './components/UserProfile.vue';
const routes = [
{
path: '/user/:id',
component: UserProfile,
alias: '/profile/:id'
}
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
В этом примере путь /user/:id имеет альтернативный путь
/profile/:id. При переходе на /profile/42
компонент UserProfile будет отрендерен, а адресная строка
сохранит /profile/42.
Сохранение URL В отличие от
redirect, alias не меняет адрес в браузере. Компонент видит
маршрут так, как если бы был использован основной путь.
Параметры маршрута Параметры работают одинаково для основного пути и alias:
// main path
/user/123 → $route.params.id === '123'
// alias path
/profile/123 → $route.params.id === '123'Использование массивов alias Одному маршруту можно задать несколько alias:
{
path: '/dashboard',
component: Dashboard,
alias: ['/home', '/start']
}
При этом /home и /start рендерят компонент
Dashboard, а URL отображает соответствующий alias.
| Характеристика | alias | redirect |
|---|---|---|
| Изменение URL | Нет | Да |
| Рендер компонента | По целевому маршруту | По целевому маршруту |
| Случаи применения | Альтернативные адреса | Перенаправление старых ссылок |
Alias полезен, когда нужно оставить адресную строку «чистым», а redirect — когда требуется полностью изменить маршрут.
Alias поддерживает динамические сегменты (:param), что
делает маршрутизацию гибкой:
{
path: '/product/:id',
component: Product,
alias: '/item/:id'
}
Здесь /product/99 и /item/99 рендерят один
и тот же компонент, а $route.params.id одинаково
доступен.
Alias можно использовать для родительских маршрутов и вложенных:
const routes = [
{
path: '/account',
component: AccountLayout,
alias: '/profile',
children: [
{ path: 'settings', component: Settings },
{ path: 'security', component: Security }
]
}
];
При переходе на /profile/settings будет рендериться
компонент Settings внутри AccountLayout. Alias
корректно работает и с вложенными маршрутами.
redirect.