РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnuSpCtCB 76 of 90 menu
◀ ▶

Текст материала в Nuxt

Заголовка мало: пользователь ожидает абзацы из файла. Тело хранится в поле body, но выводить его как сырую строку неудобно - разметка Markdown должна стать HTML. Для этого в @nuxt/content есть компонент ContentRenderer.

Давайте познакомимся с типовой страницей заметки. Сначала загрузим запись коллекции blog по path, затем передадим объект в рендерер:

<script setup> const { data: page } = await useAsyncData( 'blog-first', () => queryCollection('blog') .path('/blog/first') .first(), ); </script> <template> <h1> {{ page?.title }} </h1> <ContentRenderer v-if="page" :value="page" /> </template>

Проп value принимает весь объект страницы, не только строку body. Модуль сам возьмёт разобранный Markdown и соберёт разметку внутри обёртки. Текст Hello from the post. из first.md появится как обычный абзац HTML.

Условие v-if защищает от рендера до завершения useAsyncData. На сервере HTML тела уже может попасть в ответ, что полезно для поисковых систем.

На странице одной новости коллекции news выведите заголовок и тело через ContentRenderer.

На странице материала справочника guides покажите полный текст заметки тем же компонентом после загрузки записи.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить