Skip to content

API Времени Выполнения

VitePress предлагает несколько встроенных API для доступа к данным приложения. VitePress также включает несколько встроенных компонентов, которые можно использовать глобально.

Вспомогательные методы можно импортировать глобально из vitepress и обычно используются в пользовательских компонентах темы Vue. Однако они также могут использоваться внутри страниц .md, поскольку файлы markdown компилируются в Однофайловые Компоненты Vue.

Методы, начинающиеся с use*, указывают на то, что это функция Vue 3 Composition API ("Composable"), которая может использоваться только внутри setup() или <script setup>.

useData composable

Возвращает данные, специфичные для страницы. Возвращаемый объект имеет следующий тип:

ts
interface VitePressData<T = any> {
  /**
   * Метаданные на уровне сайта
   */
  site: Ref<SiteData<T>>
  /**
   * themeConfig из .vitepress/config.js
   */
  theme: Ref<T>
  /**
   * Метаданные на уровне страницы
   */
  page: Ref<PageData>
  /**
   * Frontmatter страницы
   */
  frontmatter: Ref<PageData['frontmatter']>
  /**
   * Динамические параметры маршрута
   */
  params: Ref<PageData['params']>
  title: Ref<string>
  description: Ref<string>
  lang: Ref<string>
  isDark: Ref<boolean>
  dir: Ref<string>
  localeIndex: Ref<string>
}

interface PageData {
  title: string
  titleTemplate?: string | boolean
  description: string
  relativePath: string
  filePath: string,
  headers: Header[]
  frontmatter: Record<string, any>
  params?: Record<string, any>
  isNotFound?: boolean
  lastUpdated?: number
}

Пример:

vue
<script setup>
import { useData } from 'vitepress'

const { theme } = useData()
</script>

<template>
  <h1>{{ theme.footer.copyright }}</h1>
</template>

useRoute composable

Возвращает текущий объект маршрута со следующим типом:

ts
interface Route {
  path: string
  data: PageData
  component: Component | null
}

useRouter composable

Возвращает экземпляр маршрутизатора VitePress, чтобы вы могли программно перейти на другую страницу.

ts
interface Router {
  /**
   * Текущий маршрут.
   */
  route: Route
  /**
   * Перейти к новому URL.
   */
  go: (to?: string) => Promise<void>
  /**
   * Вызывается перед изменением маршрута. Верните `false`, чтобы отменить навигацию.
   */
  onBeforeRouteChange?: (to: string) => Awaitable<void | boolean>
  /**
   * Вызывается перед загрузкой компонента страницы (после обновления состояния истории). Верните `false`, чтобы отменить навигацию.
   */
  onBeforePageLoad?: (to: string) => Awaitable<void | boolean>
  /**
   * Вызывается после изменения маршрута.
   */
  onAfterRouteChanged?: (to: string) => Awaitable<void>
}

withBase helper

  • Тип: (path: string) => string

Добавляет настроенный base к заданному URL-пути. См. также Базовый URL.

<Content /> component

Компонент <Content /> отображает отрендеренное содержимое markdown. Полезно при создании собственной темы.

vue
<template>
  <h1>Пользовательский Макет!</h1>
  <Content />
</template>

<ClientOnly /> component

Компонент <ClientOnly /> рендерит свой слот только на стороне клиента.

Поскольку приложения VitePress рендерятся на стороне сервера в Node.js при генерации статических сборок, весь пользовательский код должен соответствовать требованиям универсального кода. Короче говоря, убедитесь, что вы обращаетесь к API браузера / DOM только в хуках beforeMount или mounted компонентов Vue.

Если вы используете или демонстрируете компоненты, которые не поддерживают SSR (например, содержат пользовательские директивы), вы можете обернуть их в компонент ClientOnly.

template
<ClientOnly>
  <NonSSRFriendlyComponent />
</ClientOnly>

$frontmatter template global

Прямой доступ к данным frontmatter текущей страницы в выражениях Vue.

md
---
title: Привет
---

# API Времени Выполнения

$params template global

Прямой доступ к [

динамическим параметрам маршрута](../introduction/routing#dynamic-routes) текущей страницы в выражениях Vue.

md
- название пакета: {{ $params.pkg }}
- версия: {{ $params.version }}

Содержание доступно по лицензии MIT