使用可复用 MDX 组件增强 Astro 博客
写文档和技术博客往往会让人觉得重复单调,视觉上也很单调。大段文字读起来并不有趣,但有了在 Astro 上运行的 MDX(Markdown + JSX),我们可以轻松地将交互式的、精美样式的类 React 组件直接注入到我们的文章中。
在这篇文章中,我们将介绍如何通过自定义设计系统将标准 markdown 博客转变为一个交互式学习体验。
有时你需要快速吸引读者的注意力。也许某个依赖已弃用,或者有一个他们应该知道的安全漏洞。我们没有使用粗体文字,而是构建了一个通用的 <Callout /> 组件。
你知道吗? 最新版本的 Astro 允许你在集合中无缝地同时使用标准 markdown 和 mdx 文件!
在编写复杂的框架组件时,利用 TypeScript 可以通过提前捕获 prop 验证问题来大幅减少运行时错误。
我最近从 Astro v3 迁移到 v5。请确保你的 content.config.ts 已正确更新以使用 astro:content。
在记录库时,给开发者提供选择是必不可少的。注意有多少顶级文档提供 npm、pnpm 和 yarn 安装选项?使用我们的自定义 <Tabs> 组件,提供这种功能完全无摩擦:
npm install @lucide/astropnpm add @lucide/astroyarn add @lucide/astro我们创建了一个 <Steps> 组件,而不是标准的无序列表(<ul>),它可以自动为教程呈现清晰的垂直时间线:
运行 npm create astro@latest 并选择博客模板,立即获得高度优化的站点脚手架。
运行 npx astro add tailwind 以安全地将最新版本的 Tailwind 安装到你的 UI 层。
添加 @astrojs/mdx 插件并立即开始编写内容!
我决定集成 Expressive Code。这是一个 Astro 集成,无需使用自定义组件即可自动为你的代码块添加惊人的功能。完全原生支持 MDX!
---import Layout from '../layouts/Layout.astro';import { getCollection } from 'astro:content';
const posts = await getCollection('post');---<Layout title="欢迎来到我的博客"> <main> <h1>你好世界</h1> </main></Layout>MDX 是一种让你在 Markdown 文档中无缝编写 JSX 的格式。你可以导入组件,如交互式图表或警报,并将它们嵌入到你的内容中。
在审查框架或方法论时,ProsCons 列表对于让你的读者快速消化好处非常宝贵:
有时解释复杂的架构概念需要视频。我为 MDX 原生构建了一个零布局偏移的 YouTube 嵌入器:
如果你需要引用外部文档,而不是标准超链接,请使用 <LinkCard>:
有了这些组件,你的技术博客不仅仅信息丰富——它将是一种体验。🎉