From 6dd3632960851b2545ac5b90eea6d8377360dd4c Mon Sep 17 00:00:00 2001 From: Bugo <229402+dragomano@users.noreply.github.com> Date: Thu, 19 Mar 2026 23:25:24 +0500 Subject: [PATCH] docs(ru): update translations (#5152) --- docs/ru/guide/routing.md | 82 ++++++++++++++++++++++++++++---- docs/ru/reference/runtime-api.md | 10 +++- 2 files changed, 82 insertions(+), 10 deletions(-) diff --git a/docs/ru/guide/routing.md b/docs/ru/guide/routing.md index 18b0f133..63cf0ee6 100644 --- a/docs/ru/guide/routing.md +++ b/docs/ru/guide/routing.md @@ -85,12 +85,10 @@ src/getting-started.md --> /getting-started.html ```md - [Первые шаги](./getting-started) [Первые шаги](../guide/getting-started) - [Первые шаги](./getting-started.md) [Первые шаги](./getting-started.html) ``` @@ -201,8 +199,6 @@ export default { } ``` -Пути перезаписи компилируются с помощью пакета `path-to-regexp` — обратитесь к [его документации](https://github.com/pillarjs/path-to-regexp#parameters) за более сложным синтаксисом. - Пути перезаписи компилируются с помощью пакета `path-to-regexp` — обратитесь к [его документации](https://github.com/pillarjs/path-to-regexp/tree/6.x#parameters) за более сложным синтаксисом. `rewrites` также может быть функцией, которая получает исходный путь и возвращает новый: @@ -222,7 +218,6 @@ export default { ```md [Ссылка на PKG B](../pkg-b/pkg-b-code) ``` - ::: ## Динамические маршруты {#dynamic-routes} @@ -248,7 +243,10 @@ export default { // packages/[pkg].paths.js export default { paths() { - return [{ params: { pkg: 'foo' } }, { params: { pkg: 'bar' } }] + return [ + { params: { pkg: 'foo' }}, + { params: { pkg: 'bar' }} + ] } } ``` @@ -262,6 +260,30 @@ export default { └─ bar.html ``` +### Типобезопасный загрузчик с `defineRoutes` {#type-safe-loader-with-defineroutes} + +Если вы используете TypeScript, вы можете обернуть загрузчик функцией `defineRoutes` из `vitepress`, чтобы получить подсказки типов для хуков маршрутов, таких как `paths`, `watch` и `transformPageData`: + +```ts +// packages/[pkg].paths.ts +import { defineRoutes } from 'vitepress' + +export default defineRoutes({ + watch: ['../data/**/*.json'], + async paths() { + return [ + { params: { pkg: 'foo' } }, + { params: { pkg: 'bar' } } + ] + }, + async transformPageData(pageData) { + pageData.title = `${pageData.title} · Packages` + } +}) +``` + +`defineRoutes` является необязательной, но рекомендуется при создании файлов `.paths.ts`. + ### Несколько параметров {#multiple-params} Динамический маршрут может содержать несколько параметров: @@ -310,9 +332,11 @@ import fs from 'fs' export default { paths() { - return fs.readdirSync('packages').map((pkg) => { - return { params: { pkg } } - }) + return fs + .readdirSync('packages') + .map((pkg) => { + return { params: { pkg }} + }) } } ``` @@ -336,6 +360,46 @@ export default { } ``` +### Отслеживание файлов шаблонов и данных {#watching-template-and-data-files} + +При создании содержимого страниц на основе шаблонов или внешних источников данных вы можете использовать опцию `watch` для автоматической пересборки страниц при изменении этих файлов в процессе разработки: + +```js +// posts/[slug].paths.js +import fs from 'node:fs' +import { renderTemplate } from './templates/renderer.js' + +export default { + // Отслеживание изменений в файлах шаблонов и источниках данных + watch: [ + './templates/**/*.njk', // Файлы шаблонов + '../data/**/*.json' // Файлы данных + ], + + paths(watchedFiles) { + // watchedFiles будет массивом абсолютных путей найденных файлов + // Чтение файлов данных для генерации маршрутов + const dataFiles = watchedFiles.filter(file => file.endsWith('.json')) + + return dataFiles.map(file => { + const data = JSON.parse(fs.readFileSync(file, 'utf-8')) + + return { + params: { slug: data.slug }, + content: renderTemplate(data) // Использование шаблона для генерации контента + } + }) + } +} +``` + +Опция `watch` работает так же, как и в [загрузчиках данных](./data-loading#data-from-local-files): + +- Принимает [glob-шаблоны](https://github.com/mrmlnc/fast-glob#pattern-syntax) для сопоставления файлов +- Шаблоны указываются относительно самого файла `.paths.js` +- Изменения в отслеживаемых файлах вызывают перегенерацию страниц и HMR во время разработки +- В продакшен-сборках все страницы генерируются один раз, независимо от конфигурации `watch` + ### Доступ к параметрам на странице {#accessing-params-in-page} Вы можете использовать параметры для передачи дополнительных данных на каждую страницу. Файл маршрута Markdown может получить доступ к параметрам текущей страницы в выражениях Vue через глобальное свойство `$params`: diff --git a/docs/ru/reference/runtime-api.md b/docs/ru/reference/runtime-api.md index f1bfe6d8..9149a451 100644 --- a/docs/ru/reference/runtime-api.md +++ b/docs/ru/reference/runtime-api.md @@ -17,7 +17,7 @@ interface VitePressData { */ site: Ref> /** - * themeConfig from .vitepress/config.js + * themeConfig из .vitepress/config.js */ theme: Ref /** @@ -38,6 +38,10 @@ interface VitePressData { isDark: Ref dir: Ref localeIndex: Ref + /** + * Текущий хеш адреса + */ + hash: Ref } interface PageData { @@ -103,6 +107,10 @@ interface Router { * обновлено). Верните `false`, чтобы отменить навигацию. */ onBeforePageLoad?: (to: string) => Awaitable + /** + * Вызывается после загрузки компонента страницы (перед обновлением компонента страницы). + */ + onAfterPageLoad?: (to: string) => Awaitable /** * Вызывается после изменения маршрута. */