Vue Router
Для использования vue-router в проекте с @lite-ssr/vue
, не требуется устанавливать отдельный rendererPlugin
, так как @lite-ssr/vue
из коробки проверяет наличие vue-router
и автоматически настраивает серверную сторону без прямой зависимости от vue-router
.
Установка
Для начала необходимо установить vue-router
:
pnpm i vue-router
Настройка роутера
При создании роутера нужно учитывать, что для SSR используется история на основе memoryHistory
, а для браузера — webHistory
.
Создание роутера
import { createRouter, createWebHistory, createMemoryHistory } from 'vue-router'
const baseUrl = import.meta.env.BASE_URL
const history = import.meta.env.SSR ? createMemoryHistory(baseUrl) : createWebHistory(baseUrl)
const routes = [
{
path: '/',
name: 'home',
component: () => import('@/pages/Home.vue')
}
]
const router = createRouter({
history,
routes
})
export default router
На стороне сервера используется memoryHistory
, на клиенте — webHistory
. Это обязательное условие для корректной работы SSR.
Подключение роутера в приложение
После того как роутер создан, подключите его к приложению в вашем entry
файле.
import { createApp } from '@lite-ssr/vue'
import App from './App.vue'
import router from './router'
const app = createApp(App)
app.use(router)
app.mount('#app')
export default app
Асинхронная загрузка роутов
Если вы хотите загружать маршруты асинхронно, например, из внешнего API, можно использовать асинхронную регистрацию приложения. Это позволяет загрузить маршруты только когда они реально понадобятся.
Асинхронное создание роутера
import { createRouter, createWebHistory, createMemoryHistory } from 'vue-router'
const baseUrl = import.meta.env.BASE_URL
const history = import.meta.env.SSR ? createMemoryHistory(baseUrl) : createWebHistory(baseUrl)
export async function getRouter() {
const routes = await getSomeAsyncRoutes() // Метод, который возвращает маршруты асинхронно
return createRouter({
history,
routes
})
}