1112 字
6 分钟
返回首页
MDX 与交互组件

1. Markdown 与 MDX 能力矩阵#

FeatureStandard Markdown (.md)Shirone MDX (.mdx)Execution Mode
排版与结构完全支持完全支持静态 SSR
代码高亮行号、边框、可折叠行号、边框、可折叠静态 SSR(富表现力代码块)
图表与数学Mermaid、KaTeXMermaid、KaTeX客户端增强
提示框Note、Tip、Important、Warning、CautionNote、Tip、Important、Warning、Caution静态 SSR
M3E 展示原子不支持直接集成(<Card>、<Skeleton>)纯 SSR(零客户端 JS)
Svelte 5 响应式孤岛不支持按需注水(<Button>、<Switch>)client:visible 惰性注水
反馈与加载原子不支持动画变形(<LoadingIndicator>)client:visible 响应式
动态 JSX 表达式不支持原生求值({authorInfo.ui})编译期 / 客户端

2. 动态表达式与数据映射#

MDX 允许在文件顶部使用 export const 声明作用域常量,可在行内求值或在模板中映射:

  • 核心框架:Astro 7
  • UI 引擎:Svelte 5
  • 设计令牌:M3E Design Tokens
  • 架构模式:孤岛架构

数组与集合可动态渲染为网格布局:

1原子组件嵌入

在文章内容中直接导入并渲染 60+ 个 M3E 原子与分子组件

2Svelte 5 孤岛

通过 client:visible 的选择性注水,确保零多余 JavaScript 开销

3JSX 表达式

原生 JavaScript 变量、数据映射与条件渲染

4扩展管道

面向 Mermaid、KaTeX、提示框与富表现力代码块的统一 SSOT 编译


3. M3E 展示与布局原语(仅 SSR)#

根据 Shirone 的组件架构(docs/atomic-structure.md),无状态展示组件会输出干净、可访问的语义化 HTML,且不带客户端运行时负载。

3.1 卡片容器(Card.svelte)#

填充卡片
默认容器背景,无投影阴影。适合分组内容块。
凸起卡片
一级容器抬升,叠加交互状态层次以增强视觉聚焦。
描边卡片
清晰利落的 1px 描边边界,在中性表面上提供干净的分割。

3.2 强调条与徽章(AccentBar 与 Badge)#

系统公告

将 AccentBar 与 Badge 组合,构建醒目的视觉提示框

M3E v0.192

3.3 骨架占位(Skeleton.svelte)#

用于预览布局骨架或搭建异步状态原型:


4. 反馈与加载指示器#

Shirone 具备高保真的 Material 3 Expressive 动效与反馈原子:

4.1 变形加载指示器(LoadingIndicator.svelte)#

基于 androidx.graphics.shapes 多边形变形实现,提供平滑的弹簧插值 7 形动画:

不确定形状变形
内含圆形变体
确定进度(68%)

4.2 线性与不确定进度(ProgressIndicator.svelte)#

管道编译80%
连续双线动画

5. 交互式 Svelte 5 孤岛#

使用 client:visible 声明的组件在进入视口时,会通过 IntersectionObserver 惰性注水:

5.1 按钮矩阵(Button.svelte)#

5.2 过滤芯片与分段按钮(Chips 与 SegmentedButton)#

M3E 过滤芯片
分段控件

5.3 开关、复选框与滑块(Switch、Checkbox、Slider)#

带状态图标的开关
选择复选框
色相光谱滑块

5.4 输入控件(TextField.svelte)#

填充文本字段
描边文本字段

6. Markdown 扩展兼容性#

Shirone 的 SSOT 统一插件管道保留了与所有 Markdown 扩展的完全兼容:

6.1 GitHub 仓库卡片#

saicacafuwari

6.2 Mermaid 架构图#

flowchart TD
    MDX[MDX Source Entry] --> Compiler["@astrojs/mdx Compiler"]
    Compiler --> Plugins["Remark / Rehype SSOT Pipeline"]
    Plugins --> Islands["Svelte 5 Interactive Islands"]
    Islands --> Swup["Swup Client Navigation Shell"]
    Swup --> Screen["M3E Expressive Article View"]

6.3 数学表达式(LaTeX / KaTeX)#

行内公式:质能等价 E=mc2E = mc^2 与高斯积分 ∫−∞∞e−x2dx=π\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}。

块级公式:

LM3E=∑i=1N(Tokeni⋅ContrastRatio)+λ∥MotionElegance∥\mathcal{L}_{M3E} = \sum_{i=1}^{N} \left( \text{Token}_i \cdot \text{ContrastRatio} \right) + \lambda \|\text{MotionElegance}\|

7. 总结#

MDX 的原生集成让技术作者能够构建丰富、交互式的文档,同时保持 Shirone 极致快速的静态性能。所有组件都遵循 Material 3 Expressive 令牌设计系统,确保一致性、可访问性与视觉和谐。

MDX 与交互组件
https://xiaobuhui.xyz/posts/mdx-showcase/
作者
xiaobuhui
发布于
2026-08-20
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取