MDX 全组件演示帖
一篇用于展示 Mahiro-Blog 当前 MDX 组件能力的示例文章,涵盖提示框、卡片、时间线、Diff 对比、GitHub 卡片等。
检测到本篇文章有变更,已为你高亮差异内容。
AI 摘要这是一个 MDX 组件样板页,集中演示 Info、Warning、Collapse、Diff、TimeLine、LinkCard、GitHub 卡片、CardGroup、Steps、Tab、Quote、Badge、FileTree、VideoPlayer、ColorSwatch、TerminalWindow、Button 等组件用法,并展示表格、脚注、任务列表与动态 JSX 数据渲染。
MDX 全组件演示
这篇文章是一个“功能样板间”。你可以直接复制其中任意组件片段到自己的 .mdx 文章里。
本页组件目录(移动端可折叠)
提示框 Alerts
这是一个信息提示框,适合放背景说明、注意事项、概念解释。
这是一个成功提示框,适合放“操作已完成”“配置成功”等内容。
这是一个警告提示框,适合提醒兼容性、风险项、前置条件。
这是一个错误提示框,适合放排错建议和失败原因。
自定义提示框 AlertBase
这是通过 AlertBase 自定义出来的提示框,你可以自由组合 type 和 icon。
在生产环境启用新功能前,建议先在预览环境回归测试。
折叠与键盘(Collapse + Kbd)
点击展开:常用快捷键
- Ctrl + K:打开搜索
- Ctrl + S:保存草稿
- Shift + Enter:换行
图片对比 Diff
时间线 TimeLine
链接与功能卡片
组件化内容
在 MDX 内直接使用组件,构建更丰富的图文内容。
站点导航与友链卡片
Mahiro 导航
收录优质开发与设计资源,持续更新。
Astro
Build faster websites with less client-side JavaScript.
项目与仓库卡片
Mahiro-Blog
Open Source一个偏内容创作体验的 Astro 博客模板,支持写作后台与丰富组件。
Loading repository information...
Expose your TCP/UDP port behind full-cone NAT to the Internet.
Astro:用于构建高性能内容网站的现代框架。
GitHub 统计卡片
MhYa123 / Mahiro-Blog
Loading...
Showcase(站点可达性小徽章)
卡片模板 Card / CardGroup
卡片 A
适合放简要结论、步骤摘要或模块说明。
卡片 B
可以和 FeatureCard、LinkCard 混用,统一视觉节奏。
卡片 C
支持响应式列数,移动端会自动堆叠。
数学公式(KaTeX:行内 + 块级)
行内公式示例:当学习率使用余弦退火时,常见写法是 。
块级公式示例(高斯分布概率密度):
再来一个矩阵示例:
高亮代码块(行号 / 复制按钮)
下面两个代码块会走你当前站点的代码增强链路(语言标签、行号、复制按钮)。
type PostMeta = {
title: string;
slug: string;
tags: string[];
updatedAt?: string;
};
export function normalizeSlug(input: string): string {
return input
.trim()
.toLowerCase()
.replace(/\s+/g, "-")
.replace(/[^a-z0-9\-]/g, "");
}
export function toPostMeta(title: string, tags: string[]): PostMeta {
return {
title,
slug: normalizeSlug(title),
tags: [...new Set(tags.map(t => t.trim()).filter(Boolean))],
updatedAt: new Date().toISOString(),
};
}# install dependencies
pnpm install
# run dev server
pnpm dev
# type/lint checks
pnpm check步骤条 Steps
非常适合教程类文章的流程引导,自动编号,带连接线。
安装依赖
使用你喜欢的包管理器安装项目依赖。推荐使用 pnpm。
配置环境变量
复制 .env.example 为 .env 并填入必要的 API 密钥。
启动开发服务器
运行 pnpm dev,然后打开 http://localhost:4321 查看效果。
部署上线
运行 pnpm build 构建,将 dist/ 目录推送到你的服务器或 CDN 平台。
选项卡 Tab
适合多平台配置对比、多语言代码示例等场景,点击切换无需跳转:
pnpm create astro@latest
pnpm install
pnpm devnpm create astro@latest
npm install
npm run devyarn create astro
yarn
yarn devbun create astro@latest
bun install
bun dev引用卡片 Quote
用于展示名人名言、重要引用或标注性文本:
Talk is cheap. Show me the code.
愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。 能做事的做事,能发声的发声。有一分热,发一分光,就令萧之光火一般,也可以在黑暗里发一点光,不必等候炬火。
徽章 Badge
行内的状态标签,支持多种色彩、尺寸和图标。你可以把它清清爬爬地嵌入在任何文字里:
文件树 FileTree
用于展示项目目录结构,支持高亮和备注:
- src/
- components/
- mdx/ // 所有 MDX 组件
- widgets/ // 全局交互小组件
- MainCard.astro
-
- content/
- blog/
-
- layouts/
- BaseLayout.astro
- PostLayout.astro
-
- styles/
- global.scss // 全局样式设计系统
-
-
- public/
- images/
- favicon.png
-
- astro.config.mjs
- package.json
- tsconfig.json
视频播放器 VideoPlayer
支持本地视频、Bilibili 和 YouTube 嵌入。下方是嵌入 B 站视频的示例:
VideoPlayer 组件支持三种模式:src(本地视频)、bilibili(BV 号)、youtube(视频 ID)。
色板展示 ColorSwatch
用于设计类文章展示配色方案:
作者卡片 AuthorCard
适用于文章末尾或者嘉宾栏,做一张优雅的作者名片:
网格布局 Grid
打破 Markdown 枯燥的单列排版,你可以将内容、图片或其他的 MDX 组件放入网格容器中。移动端会自动塌陷为单列响应式。
极速响应
完美排版
终端窗口 TerminalWindow
对于开发者来说,代码块套上一个带有 macOS 小圆点的仿真终端容器,极客氛围拉满:
# 一键部署你的个人博客
git clone https://github.com/mahiro/blog.git
cd blog
pnpm install
pnpm build交互按钮 Button
不仅仅是文字链接,当需要一个重分量的 Call-To-Action (CTA) 时,你可以丢一个好看的按钮进去:
更多原生 MDX 与 Markdown 进阶语法
MDX 的强大不仅在于可以直接引入框架组件,还完全兼容并扩展了你日常用到的 Markdown 的原生高阶特性:
1. 复杂嵌套组件流 (Component Nesting)
你不仅可以直接书写内容,还可以随意嵌套我们的任何 MDX 组件!比如,把代码块、提醒框丢到 <Collapse> 中:
点击展开一个带有提醒的代码高阶用法
你可以在折叠框里随心所欲写 Markdown:
记得先配置环境变量 .env,否则项目起不来!
# 假装这是一个神奇的部署命令
npm run deploy --force2. Markdown 原生表格 (Tables)
| 框架名称 | 首推架构 | 渲染模式 | 适合搭配的宿主环境 |
|---|---|---|---|
| Astro | Islands | SSG / SSR | 极强的内容站点、博客 |
| Next.js | App Router | SSR / RSC | 复杂的面板、全栈交互应用 |
| Nuxt | Vue 3 | SSR / SSG | 偏爱 Vue 生态的高交互站点 |
3. 脚标标注 / Markdown Footnotes
当你在内容中需要解释某个专有名词但不想打断正文阅读体验时,可以善用脚注功能。
比如说,这个项目的主题使用的是现代化色彩空间 OKLCH1。而在排版中,为了更好的无障碍响应,全部使用了 rem2 相对单位而不是僵硬的像素。
4. 任务列表与代办事项 (Task Lists)
- 重构 Astro 基础全局布局
- 实现所有交互组件的平滑过渡动画
- 接入文章 Algolia 模糊预搜索
- 增加夜间模式/自适应光效探针
5. 动态变量与 JSX 数据遍历
利用 MDX 的原生生态,你可以直接在文件里随时定义 JS 变量并且当场 .map() 渲染:
下面这一组炫目的徽章就是我们在 MDX 里用变量自动 .map() 写出来的:
复制建议
如果你是第一次用 MDX,建议先从这三个组件开始:
Info / Warning(表达结构更清晰)LinkCard(外链更美观)GitHubRepoCard(技术文章里很实用)
如果你想挑战进阶,就可以像上文演示的一样,使用 export const 来结合局部 JSX 数据生成图表与复杂的动态排版!
Comments