Создание сайта блога с помощью Gatsby JS — Часть 3 (Gatsby Plugin Mdx)

В частности, прежде чем мы закончим создание домашней страницы с несколькими компонентами, на домашней странице будет отображаться блог. но это все еще статически, здесь мы будем использовать gatsby-plugin-mdx для преобразования уценки в страницы.

Создание сайта блога с помощью Gatsby JS — Часть 1 (Начало работы)
Создание сайта блога с помощью Gatsby JS — Часть 2 (интерфейс Chakra и домашняя страница)
Создание сайта блога с помощью Gatsby JS — Часть 3 (Gatsby Plugin Mdx)
Создание сайта блога с помощью Gatsby JS — Часть 4 (React Helmet и тег SEO)
Создание сайта блога с помощью Gatsby JS — Часть 5 (Развертывание сайт на Netlify)

Вот шаги, которым следует Гэтсби, чтобы это произошло.

  1. Чтение файлов в Gatsby из файловой системы
  2. Преобразование Markdown в HTML и передний план в данные
  3. Добавить файл уценки
  4. Создайте компонент Collection Route для файлов Markdown.

Установить

npm install gatsby-plugin-mdx @mdx-js/mdx @mdx-js/react gatsby-source-filesystem

Настроить плагин

Исходная файловая система Gatsby

добавьте следующий код внутри plugins на gatsby-config.js

Плагин Gatsby Mdx

Вы будете использовать плагин gatsby-plugin-mdx для распознавания файлов в формате Markdown и чтения их содержимого. Плагин преобразует часть метаданных переднего плана ваших файлов Markdown frontmatter и часть содержимого в HTML.

Добавить файл уценки

Создайте каталог /src/blogs и создайте имя файла first-post.md .

Метаданные Frontmatter

Когда вы создаете файл Markdown, вы можете включить набор пар ключ/значение, которые можно использовать для предоставления дополнительных данных, относящихся к определенным страницам на уровне данных GraphQL. Эти данные называются «впереди» и обозначаются тройными тире в начале и в конце блока. Этот блок будет проанализирован gatsby-transformer-remark YAML. Затем вы можете запросить данные через GraphQL API из ваших компонентов React.

Создайте маршрут сбора для файлов Markdown

Создайте файл /src/pages/{mdx.slug}.jsx.

Имя файла {mdx.slug} означает, что Гэтсби указывает, является ли поисковый запрос из запроса GraphQL, см. текст, выделенный жирным шрифтом ниже.

query($id: String!) {
    mdx(id: { eq: $id }) {
      body
      slug
      timeToRead
      frontmatter {
        date(formatString: "MMMM DD, YYYY")
        title
        cover
      }
    }
}

Gatsby найдет файлы уценки, которые были зарегистрированы ранее, и, если они совпадают с слагом, отобразит страницу.

Если вы не знаете о graphql в Gatsby JS, вы можете посетить страницу http://localhost:8000/___graphiql и написать запрос, чтобы показать все данные уценки.

По сути, Gatsby предоставляет сервер GrapQL и клиентский инструмент, с помощью которого мы можем использовать данные, такие как уценка, изображения и другие, с помощью функции graphql , а результатом являются данные в формате json.

Вернуться к основной теме

Поскольку мы используем пользовательский интерфейс Chakra, все основано на компоненте, поэтому мы используем <MdxProvider /> и устанавливаем пользовательский компонент, такой как h1-h6, изображение, абзац, в свойствах компонентов.

Внутри <MdxProvider> есть <MdxRenderer>, который преобразует метаданные из уценки в страницы JSX.

Откройте в браузере и перейдите по адресу http://localhost:8000/first-post.

Показать список блогов на главной странице

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

на /src/pages/index.jsx мы добавим запрос GraphQL для выбора файла уценки, который мы создали ранее.

обновить код

Откройте в браузере и перейдите на домашнюю страницу, там будет показан весь список блогов уценки, которые вы создали 👌.

Ссылка: