Справочник API
Глобальный объект Astro
Заголовок раздела Глобальный объект AstroГлобальный объект Astro
доступен во всех контекстах в файлах .astro
. Он обладает следующими функциями:
Astro.glob()
Заголовок раздела Astro.glob()Astro.glob()
— это способ загрузить множество локальных файлов в ваш статический сайт.
.glob()
принимает только один параметр: относительный URL-шаблон локальных файлов, которые вы хотите импортировать. Она работает асинхронно и возвращает массив экспортов из соответствующих файлов.
.glob()
не может принимать переменные или строки, которые интерполируют их, поскольку они не поддаются статическому анализу. (Обходной путь см. в руководстве по устранению неполадок). Это происходит потому, что Astro.glob()
является оберткой Vite’s import.meta.glob()
.
Вы также можете использовать import.meta.glob()
в вашем проекте Astro. Вы можете захотеть сделать это, когда:
- Вам нужна эта функция в файле, который не является
.astro
, например, в маршруте API.Astro.glob()
доступен только в файлах.astro
, в то время какimport.meta.glob()
доступен в любом месте проекта. - Вы не хотите загружать каждый файл сразу.
import.meta.glob()
может возвращать функции, которые импортируют содержимое файла, а не возвращают само содержимое. Обратите внимание, что этот импорт включает все стили и скрипты для всех импортированных файлов. Они будут собраны и добавлены на страницу независимо от того, используется ли файл на самом деле, так как это решается статическим анализом, а не во время выполнения. - Вам нужен доступ к пути каждого файла.
import.meta.glob()
возвращает карту пути файла к его содержимому, аAstro.glob()
возвращает список содержимого. - Вы хотите передать несколько шаблонов; например, вы хотите добавить “отрицательный шаблон”, который отфильтровывает определенные файлы. В качестве опции
import.meta.glob()
может принимать массив строк glob, а не одну строку.
Подробнее в документации Vite.
Файлы Markdown
Заголовок раздела Файлы MarkdownФайлы Markdown имеют следующий интерфейс:
Вы можете указать тип для переменной frontmatter
, используя TypeScript generic.
Файлы Astro
Заголовок раздела Файлы AstroФайлы Astro имеют следующий интерфейс:
Другие файлы
Заголовок раздела Другие файлыДругие файлы могут иметь различные интерфейсы, но Astro.glob()
принимает TypeScript-обобщение, если вы точно знаете, что содержит неизвестный тип файла.
Astro.props
Заголовок раздела Astro.propsAstro.props
— это объект, содержащий любые значения, которые были переданы в качестве атрибутов компонента. Компоненты макета для файлов .md
и .mdx
получают значения frontmatter в качестве props.
Astro.params
Заголовок раздела Astro.paramsAstro.params
— это объект, содержащий значения сегментов динамического маршрута, найденных для данного запроса.
В статических сборках это будут params
, возвращаемые getStaticPaths()
, используемые для пререндеринга динамических маршрутов.
В сборках SSR это может быть любое значение, соответствующее сегментам пути в шаблоне динамического маршрута.
См. также: params
Astro.request
Заголовок раздела Astro.requestAstro.request
— это стандартный объект Request. С его помощью можно получить url
, headers
, method
и даже тело запроса.
См. также: Astro.url
С опцией по умолчанию output: 'static'
, Astro.request.url
не содержит параметров поиска, таких как ?foo=bar
, так как невозможно определить их заранее во время статической сборки. Однако в режиме output: 'server'
, Astro.request.url
содержит параметры поиска, так как их можно определить из запроса сервера.
Astro.response
Заголовок раздела Astro.responseAstro.response
— это стандартный объект ResponseInit
. Он имеет следующую структуру.
status
: Числовой код статуса ответа, например,200
.statusText
: Сообщение о статусе, связанное с кодом статуса, например,'OK'
.headers
: ЭкземплярHeaders
, который можно использовать для установки HTTP-заголовков ответа.
Astro.response
используется для установки status
, statusText
и headers
для ответа страницы.
Или чтобы установить заголовок:
Astro.cookies
Заголовок раздела Astro.cookies
Добавлено в:
astro@1.4.0
Astro.cookies
содержит утилиты для чтения и работы с куки в режиме серверного рендеринга.
Тип: (key: string, options?: CookieGetOptions) => AstroCookie
Получает куки в виде объекта AstroCookie
, который содержит value
и служебные функции для преобразования куки в нестроковые типы.
Тип: (key: string) => boolean
Существует ли данный куки. Если куки были установлены через Astro.cookies.set()
, то возвращается true, в противном случае проверяются куки в Astro.request
.
Тип: (key: string, value: string | number | boolean | object, options? CookieSetOptions) => void
Устанавливает для key
куки заданное значение. При этом будет сделана попытка преобразовать значение куки в строку. Опции позволяют установить характеристики куки, такие как maxAge
или httpOnly
.
delete
Заголовок раздела deleteТип: (key: string, options?: CookieDeleteOptions) => void
Помечает куки как удаленный. После удаления куки Astro.cookies.has()
вернет false
, а Astro.cookies.get()
вернет AstroCookie
с значением
undefined
. Опции позволяют задать domain
и path
удаляемого куки.
headers
Заголовок раздела headersТип: () => Iterator<string>
Получает значения заголовков Set-Cookie
, которые будут отправлены вместе с ответом.
AstroCookie
Заголовок раздела AstroCookieПолучение куки с помощью Astro.cookies.get()
возвращает тип AstroCookie
. Он имеет следующую структуру.
Тип: string | undefined
Необработанное строковое значение куки.
Тип: () => Record<string, any>
Разбирает значение куки с помощью JSON.parse()
, возвращая объект. Выбрасывает исключение, если значение куки не является корректным JSON.
number
Заголовок раздела numberТип: () => number
Разбирает значение куки как число. Возвращает NaN, если число не является действительным.
boolean
Заголовок раздела booleanТип: () => boolean
Преобразует значение куки в логическое значение.
CookieGetOptions
Заголовок раздела CookieGetOptions
Добавлено в:
astro@4.1.0
Получение куки также позволяет указать опции через интерфейс CookieGetOptions
:
decode
Заголовок раздела decodeТип: (value: string) => string
Позволяет настраивать способ десериализации куки в значение.
CookieSetOptions
Заголовок раздела CookieSetOptions
Добавлено в:
astro@4.1.0
Установка куки с помощью Astro.cookies.set()
позволяет передать CookieSetOptions
для настройки того, как куки будет сериализована.
domain
Заголовок раздела domainТип: string
Указывает домен. Если домен не задан, большинство клиентов будут интерпретировать применение к текущему домену.
expires
Заголовок раздела expiresТип: Date
Указывает дату истечения срока действия файла куки.
httpOnly
Заголовок раздела httpOnlyТип: boolean
Если значение равно true, куки не будет доступен на стороне клиента.
maxAge
Заголовок раздела maxAgeТип: number
Указывает число в секундах, в течение которого куки будет действителен.
Тип: string
Указывает подпункт домена, в котором применяется куки.
sameSite
Заголовок раздела sameSiteТип: boolean | 'lax' | 'none' | 'strict'
Определяет значение заголовка куки SameSite.
secure
Заголовок раздела secureТип: boolean
Если значение равно true, то куки будет устанавливаться только на https-сайтах.
encode
Заголовок раздела encodeТип: (value: string) => string
Позволяет настроить способ сериализации куки.
Astro.redirect()
Заголовок раздела Astro.redirect()Astro.redirect()
позволяет перенаправить вас на другую страницу.
Страница (а не дочерний компонент) должна возвращать
результат Astro.redirect()
, чтобы произошла переадресация.
Astro.canonicalURL
Заголовок раздела Astro.canonicalURLИспользуйте Astro.url
для построения собственного канонического URL.
Канонический URL текущей страницы.
Astro.url
Заголовок раздела Astro.url
Добавлено в:
astro@1.0.0-rc
Объект URL, созданный из текущего значения строки URL Astro.request.url
. Используется для работы с отдельными свойствами URL запроса, такими как имя пути и происхождение.
Эквивалентно выполнению new URL(Astro.request.url)
.
Вы также можете использовать Astro.url
для создания новых URL, передавая его в качестве аргумента в new URL()
.
Astro.clientAddress
Заголовок раздела Astro.clientAddress
Добавлено в:
astro@1.0.0-rc
Указывает IP-адрес запроса. Это свойство доступно только при сборке для SSR (рендеринг на стороне сервера) и не должно использоваться для статических сайтов.
Astro.site
Заголовок раздела Astro.siteAstro.site
возвращает URL
, созданный из site
в вашей конфигурации Astro. Если site
в вашем конфиге Astro не определен, то Astro.site
не будет определен.
Astro.generator
Заголовок раздела Astro.generator
Добавлено в:
astro@1.0.0
Astro.generator
— это удобный способ добавить тег <meta name="generator">
с вашей текущей версией Astro. Он имеет формат "Astro v1.x.x"
.
Astro.slots
Заголовок раздела Astro.slotsAstro.slots
содержит служебные функции для изменения дочерних слотов компонента Astro.
Astro.slots.has()
Заголовок раздела Astro.slots.has()Тип: (slotName: string) => boolean
С помощью функции Astro.slots.has()
можно проверить, существует ли содержимое для определенного имени слота. Это может быть полезно, когда вы хотите обернуть содержимое слота, но хотите выводить элементы обертки только тогда, когда слот используется.
Astro.slots.render()
Заголовок раздела Astro.slots.render()Тип: (slotName: string, args?: any[]) => Promise<string>
.
Вы можете асинхронно вывести содержимое слота в строку HTML с помощью Astro.slots.render()
.
Это для продвинутых случаев использования! В большинстве случаев проще выводить содержимое слота с помощью элемента <slot />
.
Astro.slots.render()
опционально принимает второй аргумент: массив параметров, которые будут переданы всем дочерним функциям. Это может быть полезно для компонентов пользовательских утилит.
Например, этот компонент <Shout />
преобразует свое свойство message
в верхний регистр и передает его в слот по умолчанию:
Функция обратного вызова, переданная в качестве дочерней функции <Shout />
, получит параметр message
со всеми заглавными буквами:
Astro.self
Заголовок раздела Astro.selfAstro.self
позволяет рекурсивно вызывать компоненты Astro. Такое поведение позволяет вызывать компонент Astro изнутри самого себя, используя <Astro.self>
в шаблоне компонента. Это может быть полезно для итераций по большим хранилищам данных и вложенным структурам данных.
Этот компонент можно использовать следующим образом:
При этом HTML будет выглядеть следующим образом:
Astro.locals
Заголовок раздела Astro.localsAstro.locals
— это объект, содержащий любые значения из объекта context.locals
от промежуточного ПО. Используйте его для доступа к данным, возвращаемым промежуточным ПО, в ваших файлах .astro
.
Astro.preferredLocale
Заголовок раздела Astro.preferredLocaleAstro.preferredLocale
— это вычисляемое значение, которое представляет предпочтительную локаль пользователя.
Оно вычисляется путем проверки настроенных локалей в вашем массиве i18n.locales
и локалей, поддерживаемых браузером пользователя через заголовок Accept-Language
. Это значение является undefined
, если такого соответствия нет.
Это свойство доступно только при создании для SSR (рендеринг на стороне сервера) и не должно использоваться для статических сайтов.
Astro.preferredLocaleList
Заголовок раздела Astro.preferredLocaleListAstro.preferredLocaleList
представляет собой массив всех локалей, которые запрашиваются браузером и поддерживаются вашим сайтом. Это позволяет получить список всех совместимых языков между вашим сайтом и посетителем.
Если ни один из запрошенных браузером языков не найден в вашем массиве локалей, то значение будет []
: вы не поддерживаете ни один из предпочитаемых посетителем локалей.
Если браузер не указывает предпочтительные языки, то это значение будет i18n.locales
: все поддерживаемые вами локали будут считаться одинаково предпочтительными для посетителя, не имеющего предпочтений.
Это свойство доступно только при создании для SSR (рендеринг на стороне сервера) и не должно использоваться для статических сайтов.
Astro.currentLocale
Заголовок раздела Astro.currentLocaleЛокаль, вычисленная из текущего URL, с использованием синтаксиса, указанного в вашей конфигурации locales
. Если URL не содержит префикса /[locale]/
, то значение по умолчанию будет равно i18n.defaultLocale
.
Контекст конечной точки
Заголовок раздела Контекст конечной точкиФункции конечных точек получают в качестве первого параметра объект контекста. Он отражает многие глобальные свойства Astro
.
context.params
Заголовок раздела context.paramscontext.params
— это объект, содержащий значения динамических сегментов маршрута, найденных для данного запроса.
В статических сборках это будут params
, возвращаемые getStaticPaths()
, используемые для пререндеринга динамических маршрутов.
В сборках SSR это может быть любое значение, соответствующее сегментам пути в шаблоне динамического маршрута.
См. также: params
context.props
Заголовок раздела context.propscontext.props
— это объект, содержащий любые props
, переданные из getStaticPaths()
. Поскольку getStaticPaths()
не используется при сборке для SSR (рендеринг на стороне сервера), context.props
доступен только в статических сборках.
См. также: Передача данных с props
context.request
Заголовок раздела context.requestСтандартный объект Request. С его помощью можно получить url
, headers
, method
и даже тело запроса.
См. также: Astro.request
context.cookies
Заголовок раздела context.cookiescontext.cookies
содержит утилиты для чтения и работы с куки.
См. также: Astro.cookies
context.url
Заголовок раздела context.urlОбъект URL, построенный из текущего значения строки URL context.request.url
.
См. также: Astro.url
context.clientAddress
Заголовок раздела context.clientAddressУказывает IP-адрес запроса. Это свойство доступно только при построении для SSR (рендеринг на стороне сервера) и не должно использоваться для статических сайтов.
См. также: Astro.clientAddress
context.site
Заголовок раздела context.sitecontext.site
возвращает URL
, созданный из site
в конфигурации Astro. Если значение не определено, то возвращается URL, сгенерированный с localhost
.
См. также: Astro.site
context.generator
Заголовок раздела context.generatorcontext.generator
— это удобный способ указать версию Astro, на которой работает ваш проект. Он имеет формат "Astro v1.x.x"
.
См. также: Astro.generator
context.redirect()
Заголовок раздела context.redirect()context.redirect()
возвращает объект Response, который позволяет перенаправить вас на другую страницу. Эта функция доступна только при построении для SSR (рендеринг на стороне сервера) и не должна использоваться для статических сайтов.
См. также: Astro.redirect()
context.locals
Заголовок раздела context.localscontext.locals
— это объект, используемый для хранения и доступа к произвольной информации во время жизненного цикла запроса.
Функции промежуточного ПО могут читать и записывать значения context.locals
:
Конечные точки API могут читать информацию только из context.locals
:
См. также: Astro.locals
getStaticPaths()
Заголовок раздела getStaticPaths()Если страница использует динамические параметры в имени файла, этот компонент должен экспортировать функцию getStaticPaths()
.
Эта функция необходима, поскольку Astro является статическим конструктором сайтов. Это означает, что весь ваш сайт создается заранее. Если Astro не знает, что нужно сгенерировать страницу во время создания, пользователи не увидят ее, когда посетят ваш сайт.
Функция getStaticPaths()
должна возвращать массив объектов, чтобы определить, какие пути будут предварительно рендериться Astro.
Его также можно использовать в статических файловых конечных точках для динамической маршрутизации.
Функция getStaticPaths()
выполняется в своей собственной изолированной области видимости один раз, до загрузки страницы. Поэтому вы не можете ссылаться на что-либо из ее родительской области, кроме импорта файлов. Компилятор выдаст предупреждение, если вы нарушите это требование.
params
Заголовок раздела paramsКлюч params
каждого возвращаемого объекта указывает Astro, какие маршруты строить. Возвращаемые параметры должны соответствовать динамическим параметрам и остальным параметрам, определенным в файловом каталоге вашего компонента.
params
кодируются в URL, поэтому в качестве значений поддерживаются только строки. Значение каждого объекта params
должно совпадать с параметрами, используемыми в имени страницы.
Например, предположим, что у вас есть страница по адресу src/pages/posts/[id].astro
. Если вы экспортируете getStaticPaths
с этой страницы и вернете следующие значения для путей:
Тогда Astro будет статически генерировать posts/1
, posts/2
и posts/3
во время сборки.
Передача данных с помощью props
Заголовок раздела Передача данных с помощью propsЧтобы передать дополнительные данные каждой сгенерированной странице, вы также можете установить значение props
для каждого возвращаемого объекта path. В отличие от params
, props
не кодируются в URL и поэтому не ограничиваются только строками.
Например, предположим, что вы генерируете страницы на основе данных, полученных из удаленного API. Вы можете передать полный объект данных компоненту страницы внутри getStaticPaths
:
Вы также можете передать обычный массив, что может быть полезно при генерации или создании заглушки для известного списка маршрутов.
Тогда Astro будет статически генерировать posts/1
и posts/2
во время сборки, используя компонент страницы в pages/posts/[id].astro
. Страница может ссылаться на эти данные с помощью Astro.props
:
paginate()
Заголовок раздела paginate()Пагинация является распространенным случаем использования для веб-сайтов, который Astro поддерживает с помощью функции paginate()
. paginate()
автоматически генерирует массив для возврата из getStaticPaths()
, который создает один URL для каждой страницы пагинируемой коллекции. Номер страницы будет передан в качестве параметра, а данные о странице будут переданы в качестве параметра page
.
paginate()
предполагает имя файла [page].astro
или [...page].astro
. Параметр page
становится номером страницы в вашем URL:
/posts/[page].astro
будет генерировать URL/posts/1
,/posts/2
,/posts/3
и т.д./posts/[...page].astro
сгенерирует URL/posts
,/posts/2
,/posts/3
и т. д.
У paginate()
есть следующие аргументы:
pageSize
- Количество элементов, отображаемых на страницеparams
- Отправка дополнительных параметров для создания динамических маршрутовprops
- Отправка дополнительных свойств, которые должны быть доступны на каждой странице
Свойство пагинации page
Заголовок раздела Свойство пагинации pageПри пагинации каждой отрисованной странице передается параметр page
, который представляет одну страницу данных в пагинируемой коллекции. Он включает в себя данные, которые вы пагинировали (page.data
), а также метаданные для страницы (page.url
, page.start
, page.end
, page.total
и т. д.). Эти метаданные полезны для таких вещей, как кнопка “Следующая страница” или сообщение “Показано 1-10 из 100”.
page.data
Заголовок раздела page.dataТип: Array
Массив данных, возвращаемых из data()
для текущей страницы.
page.start
Заголовок раздела page.startТип: number
Индекс первого элемента на текущей странице, начиная с 0
. (например, если pageSize: 25
, это будет 0
на странице 1, 25
на странице 2 и т.д.)
page.end
Заголовок раздела page.endТип: number
Индекс последнего элемента на текущей странице.
page.size
Заголовок раздела page.sizeТип: number
Сколько элементов на странице.
page.total
Заголовок раздела page.totalТип: number
Общее количество элементов на всех страницах.
page.currentPage
Заголовок раздела page.currentPageТип: number
Номер текущей страницы, начиная с 1
.
page.lastPage
Заголовок раздела page.lastPageТип: number
Общее количество страниц.
page.url.current
Заголовок раздела page.url.currentТип: string
Получите URL текущей страницы (полезно для канонических URL).
page.url.prev
Заголовок раздела page.url.prevТип: string | undefined
Получите URL предыдущей страницы (будет undefined
, если на странице 1).
page.url.next
.
Заголовок раздела page.url.next.Тип: string | undefined
Получение URL следующей страницы (будет undefined
, если больше нет страниц).
import.meta
Заголовок раздела import.metaВсе модули ESM включают свойство import.meta
. Astro добавляет import.meta.env
через Vite.
import.meta.env.SSR
можно использовать, чтобы знать, когда рендерить на сервере. Иногда вам может понадобиться другая логика, например, компонент, который должен отображаться только на клиенте:
Изображения (astro:assets
)
Заголовок раздела Изображения (astro:assets)getImage()
Заголовок раздела getImage()getImage()
зависит от API, доступных только на сервере, и вызывает ошибку сборки при использовании на клиенте.
Функция getImage()
предназначена для генерации изображений, предназначенных для использования не непосредственно в HTML, а где-то еще, например, в API Route. Она также позволяет создавать собственные компоненты <Image />
.
getImage()
принимает объект options с теми же свойствами, что и компонент Image (кроме alt
).
Он возвращает объект со следующими свойствами:
Коллекции контента (astro:content
)
Заголовок раздела Коллекции контента (astro:content)
Добавлено в:
astro@2.0.0
Коллекции контента предлагают API для настройки и запросов к вашим документам Markdown или MDX в src/content/
. О возможностях и примерах использования [см. наше руководство по коллекциям контента] (/ru/guides/content-collections/).
defineCollection()
Заголовок раздела defineCollection()defineCollection()
— это утилита для настройки коллекции в файле src/content/config.*
.
Эта функция принимает следующие свойства:
Добавлено в:
astro@2.5.0
Тип: 'content' | 'data'
По умолчанию: 'content'
type
— это строка, определяющая тип записей, хранящихся в коллекции:
'content'
— для форматов с авторским контентом, таких как Markdown (.md
), MDX (.mdx
) или Markdoc (.mdoc
)'data'
— для форматов, содержащих только данные, таких как JSON (.json
) или YAML (.yaml
)
Это означает, что коллекции не могут хранить смесь содержимого и форматов данных. Вы должны разделить эти записи на отдельные коллекции по типам.
schema
Заголовок раздела schemaТип: TSchema extends ZodType
schema
— необязательный объект Zod для настройки типа и формы frontmatter документа для коллекции. Каждое значение должно использовать валидатор Zod.
Примеры использования см. в руководстве по коллекциям контента
.
reference()
Заголовок раздела reference()Тип: (collection: string) => ZodEffects<ZodString, { collection, id: string } | { collection, slug: string }>
Функция reference()
используется в конфигурации содержимого для определения связи, или “ссылки”, от одной коллекции к другой. Она принимает имя коллекции и проверяет идентификатор(ы) записи, указанный(ые) в вашем frontmatter контента или файле данных.
Этот пример определяет ссылки автора блога на коллекцию authors
и массив связанных постов на ту же коллекцию blog
:
Примеры использования см. в руководстве Коллекции контента
.
getCollection()
Заголовок раздела getCollection()Тип: (collection: string, filter?: (entry: CollectionEntry<collection>) => boolean) => CollectionEntry<collection>[]
getCollection()
— это функция, которая получает список записей коллекции контента по имени коллекции.
По умолчанию он возвращает все элементы коллекции, а также принимает дополнительную функцию filter
для сужения списка по свойствам элементов. Это позволяет запрашивать только некоторые элементы коллекции на основе значений id
, slug
или frontmatter через объект data
.
Примеры использования см. в руководстве Коллекции контента
.
getEntry()
Заголовок раздела getEntry()
Добавлено в:
astro@2.5.0
Типы:
(collection: string, contentSlugOrDataId: string) => CollectionEntry<collection>
({ collection: string, id: string }) => CollectionEntry<collection>
({ collection: string, slug: string }) => CollectionEntry<collection>
getEntry()
— это функция, которая извлекает одну запись коллекции по имени коллекции и либо по id
(для коллекций type: 'data'
), либо по slug
(для коллекций type: 'content'
). Функция getEntry()
также может использоваться для получения ссылок на записи для доступа к свойствам data
, body
или render()
:
Примеры запросов к записям коллекции см. в руководстве Коллекции контента
.
getEntries()
Заголовок раздела getEntries()
Добавлено в:
astro@2.5.0
Типы:
(Array<{ collection: string, id: string }>) => Array<CollectionEntry<collection>>
(Array<{ collection: string, slug: string }>) => Array<CollectionEntry<collection>>
getEntries()
— это функция, которая извлекает несколько записей коллекции из одной и той же коллекции. Это полезно для возврата массива ссылающихся записей, чтобы получить доступ к связанным с ними свойствам data
, body
и render()
.
getEntryBySlug()
Заголовок раздела getEntryBySlug()Тип: (collection: string, slug: string) => CollectionEntry<collection>
Используйте функцию getEntry()
для запроса записей контента. Она принимает те же аргументы, что и getEntryBySlug()
, и поддерживает запрос по id
для коллекций JSON или YAML.
getEntryBySlug()
— это функция, которая извлекает один элемент коллекции по имени коллекции и slug
элемента.
Примеры использования см. в руководстве Коллекции контента
.
Тип элемента коллекции
Заголовок раздела Тип элемента коллекцииФункции запросов, включая getCollection()
, getEntry()
и getEntries()
, возвращают записи с типом CollectionEntry
. Этот тип доступен как утилита из astro:content
:
Тип CollectionEntry<TCollectionName>
— это объект со следующими значениями. TCollectionName
— это имя коллекции, к которой вы делаете запрос (например, CollectionEntry<'blog'>
).
Доступно для коллекций: type: 'content'
и type: 'data'
Примеры типов:
- коллекции контента:
'entry-1.md' |
‘entry-2.md’ | …` - коллекции данных:
'author-1' | 'author-2' | ...
Уникальный идентификатор, использующий путь к файлу относительно src/content/[collection]
. Перечисляет все возможные строковые значения, основанные на путях к файлам записей коллекции. Обратите внимание, что коллекции определенные как type: 'content'
включают расширение файла в свой идентификатор, а коллекции, определенные как type: 'data'
, нет.
collection
Заголовок раздела collectionДоступно для коллекций: type: 'content'
и type: 'data'
Пример типа: 'blog' | 'authors' | ...
Имя папки верхнего уровня в разделе src/content/
, в которой находятся записи. Это имя используется для ссылок на коллекцию в вашей схеме и в функциях запросов.
Доступно для коллекций: type: 'content'
и type: 'data'
Тип: CollectionSchema<TCollectionName>
Объект свойств frontmatter, выведенных из схемы вашей коллекции (см. ссылку defineCollection()
). По умолчанию принимает значение any
, если схема не задана.
Доступно только для коллекций: type: 'content'
Пример типа: 'entry-1' | 'entry-2' | ...
Готовый к использованию в URL слаг для документов Markdown или MDX. По умолчанию используется id
без расширения файла, но может быть переопределено установкой свойства slug
в frontmatter файла.
Доступно только для коллекций: type: 'content'
Тип: string
Строка, содержащая необработанное, некомпилированное тело документа Markdown или MDX.
render()
Заголовок раздела render()Доступно только для коллекций: type: 'content'
Тип: () => Promise<RenderedEntry>
Функция для компиляции заданного документа Markdown или MDX для визуализации. Возвращает следующие свойства:
<Content />
— компонент, используемый для отображения содержимого документа в файле Astro.Заголовки
— Сгенерированный список заголовков, зеркальное отражение утилиты AstrogetHeadings()
при импорте Markdown и MDX.remarkPluginFrontmatter
— Измененный объект frontmatter после применения любых плагинов remark или rehype. Устанавливается в типany
.
Пример использования см. в руководстве Коллекции контента
.
Другие типы коллекций контента
Заголовок раздела Другие типы коллекций контентаМодуль astro:content
также экспортирует следующие типы для использования в вашем проекте Astro:
CollectionKey
Заголовок раздела CollectionKeyСтроковое объединение всех имен коллекций, определенных в вашем файле src/content/config.*
. Этот тип может быть полезен при определении общей функции, принимающей любое имя коллекции.
ContentCollectionKey
Заголовок раздела ContentCollectionKeyСтроковое объединение всех имен коллекций type: 'content'
, определенных в вашем файле src/content/config.*
.
DataCollectionKey
Заголовок раздела DataCollectionKeyСтроковое объединение всех имен коллекции type: 'data'
, определенных в вашем файле src/content/config.*
.
SchemaContext
Заголовок раздела SchemaContextОбъект context
, который defineCollection
использует для формы функции schema
. Этот тип может быть полезен при создании многократно используемых схем для нескольких коллекций.
Это включает следующее свойство:
image
— Вспомогательная схемаimage()
, которая позволяет использовать локальные изображения в коллекциях контента
Промежуточное ПО (astro:middleware
)
Заголовок раздела Промежуточное ПО (astro:middleware)
Добавлено в:
astro@2.6.0
Промежуточное ПО позволяет перехватывать запросы и ответы и динамически внедрять поведение каждый раз, когда страница или конечная точка собираются быть отображенными. О возможностях и примерах использования [см. наше руководство по промежуточному ПО](/ru /guides/middleware/).
onRequest()
Заголовок раздела onRequest()Необходимая экспортируемая функция из src/middleware.js
, которая будет вызываться перед рендерингом каждой страницы или маршрута API. Она принимает два необязательных аргумента: context и next(). onRequest()
должен возвращать Response
: либо напрямую, либо через вызов next()
.
next()
Заголовок раздела next()Функция, которая перехватывает (читает и изменяет) Response
от Request
или вызывает “следующее” промежуточное ПО в цепочке и возвращает Response
. Например, эта функция может изменять HTML-тело ответа.
Это необязательный аргумент onRequest()
, который может содержать требуемый Response
, возвращаемый промежуточным ПО.
sequence()
Заголовок раздела sequence()Функция, принимающая функции промежуточного ПО в качестве аргументов и выполняющая их в том порядке, в котором они были переданы.
createContext()
Заголовок раздела createContext()Низкоуровневый API для создания APIContext
для передачи в функцию промежуточного ПО Astro onRequest()
.
Эта функция может использоваться интеграциями/адаптерами для программного выполнения промежуточного программного обеспечения Astro.
trySerializeLocals()
Заголовок раздела trySerializeLocals()Низкоуровневый API, который принимает любое значение и пытается вернуть его сериализованную версию (строку). Если значение не может быть сериализовано, функция выдает ошибку времени выполнения.
Встроенные компоненты
Заголовок раздела Встроенные компонентыAstro включает в себя несколько встроенных компонентов, которые вы можете использовать в своих проектах. Все встроенные компоненты доступны в файлах .astro
через команду import {} from 'astro:components';
.
<Code />
Заголовок раздела <Code />Этот компонент обеспечивает подсветку синтаксиса для блоков кода во время сборки (без использования JavaScript на стороне клиента). Компонент работает на базе Shiki и поддерживает все популярные темы и языки. Кроме того, вы можете добавлять свои собственные темы и языки, передавая их в theme
и lang
соответственно.
<Fragment />
Заголовок раздела <Fragment />Компонент, используемый с директивами set:*
для вывода HTML-контента без дополнительных элементов обертки:
Подробнее об использовании фрагментов смотрите в разделе синтаксис Astro.
<Prism />
Заголовок раздела <Prism />Чтобы использовать компонент подсветки Prism
, сначала установите пакет @astrojs/prism
:
Этот компонент обеспечивает подсветку синтаксиса для блоков кода с применением CSS-классов Prism. Обратите внимание, что вам необходимо предоставить таблицу стилей Prism CSS (или использовать собственную), чтобы подсветка синтаксиса появилась! См. раздел Настройка Prism для получения более подробной информации.
Смотрите список языков, поддерживаемых Prism, где вы можете найти соответствующий языку псевдоним. Кроме того, вы можете отображать блоки кода Astro с lang="astro"
!
<Image />
Заголовок раздела <Image />Свойства
Заголовок раздела Свойства- src (обязательно)
- alt (обязательно)
- width and height (требуется для
public/
и внешних изображений) - format
- quality
- densities
- widths
В дополнение к вышеперечисленным свойствам, компонент <Image />
принимает все свойства, принимаемые тегом HTML <img>
.
Смотрите больше в Путеводителе по изображениям.
<Picture />
Заголовок раздела <Picture />
Добавлено в:
astro@3.3.0
Используйте встроенный компонент <Picture />
Astro для отображения отзывчивого изображения с несколькими форматами и/или размерами.
Смотрите больше в Путеводителе по изображениям.
Properties
Заголовок раздела Properties<Picture />
принимает все свойства компонента <Image />
, плюс следующие:
formats
Заголовок раздела formatsМассив форматов изображений, используемых для тегов <source>
. По умолчанию установлено значение ['webp']
.
fallbackFormat
Заголовок раздела fallbackFormatФормат, используемый в качестве запасного значения для тега <img>
. По умолчанию используется .png
для статичных изображений, .gif
для анимированных изображений и .svg
для SVG-файлов.
pictureAttributes
Заголовок раздела pictureAttributesОбъект атрибутов, добавляемых к тегу <picture>
. Используйте это свойство для применения атрибутов к самому внешнему элементу <picture>
. Атрибуты, примененные непосредственно к компоненту <Picture />
, будут применяться и к внутреннему элементу <img>
, за исключением тех, которые используются для преобразования изображения.
<Content />
Заголовок раздела <Content />Общий компонент, используемый для отображения содержимого записи коллекции контента.
Сначала запросите одну или несколько записей с помощью getCollection()
или getEntry()
. Затем функция entry.render()
может вернуть компонент <Content />
для использования в шаблоне файла .astro
.
<ViewTransitions />
Заголовок раздела <ViewTransitions />Перейдите к использованию анимации переходов между страницами, импортировав и добавив компонент маршрутизации <ViewTransitions />
в <head>
на каждой нужной странице.
Подробнее о том, как управлять маршрутизатором и добавлять директивы перехода к элементам и компонентам страницы.
<Debug />
Заголовок раздела <Debug />Этот компонент позволяет проверять значения на стороне клиента без использования JavaScript.
Reference