目录
将其与 Markdown 结合使用
在应用程序中实现 MDX
编辑器支持
MDX 插件和扩展
首页 web前端 css教程 MDXJS简介

MDXJS简介

Apr 08, 2025 am 10:15 AM

An Introduction to MDXJS

Markdown 长期以来一直是程序员编写文档的首选格式。它足够简单,几乎每个人都能学习和适应,同时又易于格式化和设置样式。它非常流行,以至于 Markdown 的 命令 已被用于 Slack 和 Whatsapp 等聊天应用程序以及 Dropbox Paper 和 Notion 等文档应用程序。当 GitHub 为 README 文档引入 Markdown 支持时,他们也从中渲染了 HTML 内容——例如,我们可以插入一些链接和图像元素,它们可以正常渲染。

尽管 Markdown 并没有任何缺陷,但总有改进的空间。这就是 Markdown 扩展 (MDX) 的用武之地。

在什么情况下我们会考虑使用 MDX 而不是 Markdown?MDX 的一个特点是可以在使用普通 Markdown 的情况下集成 JavaScript。以下是一些说明其便捷性的示例:

  • Frontend Armory 在其教育游乐场 Demoboard 上使用 MDX。该游乐场原生支持 MDX,用于创建既可作为演示又可作为文档的页面,这对于演示 React 概念和组件非常理想。
  • Brent Jackson 提出了一种全新的网站构建方法,将 MDX 和 Styled System 配对使用。每个页面都用 MDX 编写,Styled System 为代码块设置样式。它目前正在开发中,您可以在网站上找到更多详细信息。
  • 使用 mdx-deck 或 Spectacle 可以使您的下一个演示文稿更有趣。您可以在演示文稿中直接显示演示,无需切换屏幕!
  • MDX Go、ok-mdx 和 Docz 都提供使用 MDX 记录组件库的工具。您可以直接在 Markdown 文档中放置组件,它就能正常工作™。
  • 一些网站,包括 Zeit Now 和 Prisma 文档,都使用 MDX 来编写内容。

如果您想维护一个基于 React 的博客,MDX 将大放异彩。使用它意味着当您想要做一些 Markdown 中不可能做到的事情(或创建插件)时,您不再需要创建自定义 React 组件页面。我已经在我的博客上使用它一年多了,并且非常喜欢这种体验。到目前为止,我最喜欢的项目之一是一个我称之为 Playground 的 React 组件,它可以用来演示小的 HTML/CSS/JavaScript 代码片段,同时允许用户编辑代码。当然,我可以使用一些第三方服务并嵌入演示,但这这样我就不必加载任何第三方脚本了。

说到嵌入,MDX 使得嵌入由第三方服务(例如 YouTube、Vimeo、Giphy 等)创建的 iFrame 非常 容易。

将其与 Markdown 结合使用

您可以通过文件名上的 .mdx 扩展名来识别用 MDX 编写的文件。但是,让我们看看实际使用 MDX 编写内容的样子。

<code>import InteractiveChart from "../path/interactive-chart";

# Hello - I'm a Markdown heading

This is just markdown text

<interactivechart></interactivechart></code>
登录后复制

看到了吗?仍然可以使用 Markdown,并且可以在需要交互式可视化或样式时将其与 React 组件一起编写。这是我作品集中的一个示例:

MDX 的另一个好处是,就像组件一样,文件是可以组合的。这意味着页面可以拆分成多个块并重复使用,一次性渲染所有块。

<code>import Header from "./path/Header.mdx"
import Footer from "./path/Footer.mdx"



# Here goes the actual content.

Some random content goes [here](link text)

</code>
登录后复制

在应用程序中实现 MDX

大多数常见的基于 React 的集成平台(如 Gatsby 和 Next)都有 MDX 插件。

要在 create-react-app 项目中集成它,MDX 提供了一个可以导入到应用程序中的 Babel Macro:

<code>import { importMDX } from './mdx.macro'

const MyDocument = React.lazy(() => importMDX('./my-document.mdx'))

ReactDOM.render(
  <react.suspense fallback="{<div">Loading...}>
    <mydocument></mydocument></react.suspense>,
  document.getElementById('root')
);</code>
登录后复制

您也可以在他们为此创建的游乐场上试用 MDX。

MDX 贡献者非常积极地致力于为 Vue 提供支持。GitHub 上已经提供了一个示例。但这还处于 Alpha 阶段,尚未准备好用于生产环境。

编辑器支持

VS Code、Vim 和 Sublime Text 都越来越支持语法高亮和自动完成。但是,在使用过程中,这些确实有一些不足之处,并且难以导航。许多问题都源于无法预测在页面上下文中我们是使用 JavaScript 还是 Markdown。这当然是可以改进的。

MDX 插件和扩展

MDX 的一个关键优势是它是内容统一联盟的一部分,该联盟组织 remark 内容。这意味着 MDX 可以直接支持庞大的 remark 插件和 rehype 插件生态系统——无需重新发明轮子。其中一些插件,包括 remark-images 和 remark-redact,至少可以说是非凡的。要在 MDX 中使用插件,您可以将它们添加到相应的加载器或插件中。您甚至可以通过参考 MDX 创建插件指南来编写自己的 MDX 插件。

MDX 只有几岁,但它在内容领域的影响力一直在增长。从撰写博客文章和可视化数据到创建交互式演示和演示文稿,MDX 非常适合许多用途——远远超出了我们在本文介绍中介绍的内容。

以上是MDXJS简介的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

使您的第一个自定义苗条过渡 使您的第一个自定义苗条过渡 Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一种使组件输入或离开文档(包括自定义Svelte Transitions)时动画组件的方法。

使用GraphQL缓存 使用GraphQL缓存 Mar 19, 2025 am 09:36 AM

如果您最近开始使用GraphQL或审查了其优点和缺点,那么您毫无疑问听到了诸如“ GraphQl不支持缓存”或

展示,不要说 展示,不要说 Mar 16, 2025 am 11:49 AM

您花多少时间为网站设计内容演示文稿?当您撰写新的博客文章或创建新页面时,您是在考虑

使用Redwood.js和Fauna构建以太坊应用 使用Redwood.js和Fauna构建以太坊应用 Mar 28, 2025 am 09:18 AM

随着最近比特币价格超过20k美元的攀升,最近打破了3万美元,我认为值得深入研究创建以太坊

用高架创建自己的野蛮人 用高架创建自己的野蛮人 Mar 18, 2025 am 11:23 AM

无论您是开发人员的哪个阶段,我们完成的任务(无论大小)都会对我们的个人和专业成长产生巨大影响。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

NPM命令是什么? NPM命令是什么? Mar 15, 2025 am 11:36 AM

NPM命令为您运行各种任务,无论是一次性或连续运行的过程,例如启动服务器或编译代码。

See all articles