Узнайте, как использовать MDX вместо Markdown, в своем блоге Gatsby

Первоначально опубликовано на https://fek.io.

MDX - это гибрид синтаксиса Markdown и синтаксиса React JSX. Авторы, которые пишут сообщения в Markdown, могут использовать в своих сообщениях компоненты React.

В настоящее время Markdown позволяет авторам добавлять HTML-теги к своим сообщениям. Одна из приятных особенностей React заключается в том, что он позволяет нам создавать компоненты из комбинации элементов HTML, а затем повторно использовать эти элементы в наших приложениях React. MDX позволяет нам использовать те же компоненты в наших публикациях по Markdown.

import { Link } from 'gatsby'

import Layout from '../components/layout'
import Image from '../components/image'
import SEO from '../components/seo'

<SEO title="Home" keywords={['gatsby', 'application', 'react']} />

# Hi people

Welcome to your new Gatsby site.

Now go build something great.

<div style={{ maxWidth: '300px', marginBottom: '1.45rem' }}>
  <Image />
</div>
<Link to="/page-2/">Go to page 2</Link>

Добавление MDX в блог

В настоящее время я использую обычный Markdown для своего блога. Я решил, что хочу посмотреть, что потребуется для добавления MDX в мой блог. В моей текущей реализации моего сайта Gatsby я использую плагин gatsby-transformer-remark для преобразования разметки в данные Gatsby, которые можно использовать для отображения моих сообщений в блоге.

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



Это сообщение от 2019 года, и некоторые номера строк не совпадают, но его все же можно использовать в качестве основы для преобразования вашего блога для использования многомерных выражений.

W будет использовать Gatsby Starter Blog как основу для нашего преобразования. Вы можете установить это, используя следующую команду Gatsby;

> gatsby new gatsby-blog https://github.com/gatsbyjs/gatsby-starter-blog

Вам нужно будет добавить плагины mdx на свой сайт gatsby, прежде чем вносить какие-либо изменения в код. Вот команда NPM для добавления подключаемых модулей MDX.

> npm install --save gatsby-plugin-mdx gatsby-plugin-feed-mdx @mdx-js/mdx @mdx-js/react

В вашем gatsby-config.json файле мы заменим gatsby-transformer-remark config настройкой gatsby-plugin-mdx. В разделе опций вам нужно будет добавить свойство для extensions и изменить имя свойства plugins на gatsbyRemarkPlugins. Окончательная конфигурация должна выглядеть как в следующем примере.

Затем замените плагин gatsby-plugin-feed в конфиге на gatsby-plugin-feed-mdx. После того, как вы закончите вносить изменения в конфигурацию, вы можете удалить старые модули NPM.

> npm uninstall --save gatsby-transformer-remark gatsby-plugin-feed

Изменение API узла

Нам нужно будет внести некоторые изменения в файл gatsby-node.js. Нам нужно будет заменить все ссылки с allMarkdownRemark на allMdx. Нам также нужно будет изменить любые ссылочные типы, которые вместо этого используют MarkdownRemark на нас Mdx.

Изменение любой ссылки на страницу на Markdown

Теперь, когда мы изменили API узла для использования Mdx, мы можем сосредоточиться на изменении любых страниц или шаблонов, которые все еще имеют ссылки на MarkdownRemark, на использование Mdx. Вместо этого на странице index.js мы заменяем все ссылки на уценку на Mdx.

Теперь мы можем внести эти изменения в шаблон src/templates/blog-post.js, но на этот раз ссылки будут markdownRemark и mdx соответственно.

Замените html на body в запросах GraphQL, как только вы измените markdownRemark на mdx.

Теперь давайте добавим сообщение в блог о многомерных выражениях. Мы назовем этот файл example.mdx и поместим его в blog каталог с другими нашими сообщениями.

// example.mdx
---
title: MDX Example
date: "2021-07-03T22:12:03.284Z"
description: "MDX Example"
---

# My first MDX post

This is a post showing MDX in action.

MDX lets you write JSX embedded inside markdown, perfect for technical blogs.

Теперь давайте создадим компонент для добавления видео Youtube в наши сообщения MDX.

Теперь мы можем добавить этот компонент в нашу публикацию MDX.

// example.mdx
---
title: MDX Example
date: "2021-07-03T22:12:03.284Z"
description: "MDX Example"
---
import Youtube from "../../../src/components/yt.js"

# My first MDX post

This is a post showing MDX in action.

<Youtube yid="jYVM6KOWYBs" />

## MDX

MDX lets you write JSX embedded inside markdown, perfect for technical blogs.

Заключение

Внеся несколько простых изменений в наш блог Gatsby, теперь мы можем использовать компоненты React на основе MDX для наших сообщений в блоге. Теперь мы можем начать использовать собственные компоненты, смешанные с нашей упрощенной разметкой на основе разметки. Теперь мы можем делать такие вещи, как добавление видео и аудио к нашим сообщениям с помощью всего одного элемента React.

Больше контента на plainenglish.io