В Vue Router base URL определяет базовый путь
приложения, от которого строятся все маршруты. Это особенно
важно при развертывании проекта на сервере, где приложение может
находиться не в корневой директории, а, например, в подкаталоге
(https://example.com/my-app/). Без правильной настройки
базового пути маршруты могут работать некорректно, и ссылки будут вести
на неверные адреса.
При создании экземпляра Vue Router параметр history
принимает объект, где можно указать базовый путь:
import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
const router = createRouter({
history: createWebHistory('/my-app/'), // base URL указан явно
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About },
]
});
export default router;
createWebHistory('/my-app/') задает базовый URL
/my-app/./ и /about) будут
интерпретироваться относительно этого базового пути.'/'.В проектах, созданных с помощью Vue CLI или Vite, удобно использовать переменные окружения для установки базового пути:
import { createRouter, createWebHistory } from 'vue-router';
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{ path: '/', component: () => import('./views/Home.vue') },
{ path: '/about', component: () => import('./views/About.vue') },
]
});
export default router;
import.meta.env.BASE_URL автоматически подставляет
базовый URL, заданный в сборщике.process.env.BASE_URL.Base URL влияет на все навигационные действия и
генерацию ссылок с помощью router-link:
<router-link to="/">Главная</router-link>
<router-link to="/about">О нас</router-link>
Если base установлен в /my-app/, то:
<router-link to="/"> →
https://example.com/my-app/<router-link to="/about"> →
https://example.com/my-app/aboutЭто предотвращает ошибки вида 404 Not Found при открытии
страниц напрямую в браузере.
Vue Router поддерживает history mode
(createWebHistory) и hash mode
(createWebHashHistory). Base URL имеет разное влияние в
этих режимах:
History Mode (createWebHistory)
Базовый путь определяет часть URL перед маршрутом. Сервер должен быть
настроен на возврат index.html для всех маршрутов
относительно base URL.
Hash Mode (createWebHashHistory)
Base URL учитывается, но основная часть маршрута идет после символа
#. Проблем с серверной настройкой меньше, так как все
маршруты обрабатываются клиентом.
Пример использования hash mode с базовым URL:
import { createRouter, createWebHashHistory } from 'vue-router';
const router = createRouter({
history: createWebHashHistory('/my-app/'),
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About },
]
});
URL будет иметь вид:
https://example.com/my-app/#/about.
Vue Router не позволяет динамически менять base URL после создания экземпляра. Все пути строятся исходя из начальной конфигурации. Поэтому для разных окружений создаются отдельные конфигурации или используется переменная окружения, как было показано выше.
/my-app/)./my-app/about) в
браузере.<router-link> и
router.push.index.html для всех маршрутов).'/').Настройка base URL является ключевым элементом правильной маршрутизации в Vue Router и напрямую влияет на стабильность навигации и корректность ссылок при деплое.