1142 字
6 分钟
MDX 集成与 M3E 原子组件

1. Markdown 与 MDX 能力对照#

特性标准 Markdown(.mdShirone MDX(.mdx执行模式
排版与结构完整支持完整支持静态 SSR
代码高亮行号、外框、可折叠行号、外框、可折叠静态 SSR(Expressive Code)
图表与数学公式Mermaid、KaTeXMermaid、KaTeX客户端增强
Callout 提示框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
  • 架构模式:Islands Architecture

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

1原子组件内嵌

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

2Svelte 5 交互岛

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

3JSX 表达式

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

4扩展管线

为 Mermaid、KaTeX、Admonitions 与 Expressive Code 提供统一的 SSOT 编译


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

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

3.1 Card 容器(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 筛选 Chip 与分段按钮(Chips & SegmentedButton#

M3E 筛选 Chip
分段控件

5.3 开关、复选框与滑块(SwitchCheckboxSlider#

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

5.4 输入控件(TextField.svelte#

Filled Text Field
Outlined Text Field

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,以及高斯积分 ex2dx=π\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}

块级公式:

LM3E=i=1N(TokeniContrastRatio)+λ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 集成与 M3E 原子组件
https://shirone.mysqil.com/posts/mdx-showcase/
作者
Znfooe
发布于
2026-08-20
许可协议
CC BY-NC-SA 4.0

分享文章

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

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取