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

1. Markdown 与 MDX 功能对比#

功能标准 Markdown(.md)Shirone MDX(.mdx)执行模式
排版与结构完整支持完整支持静态 SSR
代码高亮行号、框架、可折叠行号、框架、可折叠静态 SSR(Expressive Code)
图表与数学公式Mermaid、KaTeXMermaid、KaTeX客户端增强
提示容器说明、提示、重要、警告、注意说明、提示、重要、警告、注意静态 SSR
M3E 展示原子组件不支持直接集成(<Card>、<Skeleton>)纯 SSR(无客户端 JS)
Svelte 5 响应式岛屿不支持按需 hydration(<Button>、<Switch>)使用 client:visible 延迟 hydration
反馈与加载原子组件不支持动态变形(<LoadingIndicator>)client:visible 响应式
动态 JSX 表达式不支持原生求值({authorInfo.ui})编译时/客户端

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

MDX 支持在文件顶部使用 export const 声明作用域内常量,并在正文中直接求值或映射到模板中:

  • Core Framework: Astro 7
  • UI Engine: Svelte 5
  • Design Tokens: M3E Design Tokens
  • Architecture Pattern: Islands Architecture

数组和集合也可以动态渲染为网格布局:

1原子组件嵌入

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

2Svelte 5 交互岛屿

通过 client:visible 选择性地进行 hydration,避免不必要的 JavaScript 开销

3JSX 表达式

使用原生 JavaScript 变量、数据映射和条件渲染

4扩展处理流程

通过统一的 SSOT 编译处理 Mermaid、KaTeX、提示容器和 Expressive Code


3. M3E Display and Layout Primitives (SSR-Only)#

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

3.1 卡片容器(Card.svelte)#

填充卡片
使用默认容器背景,不带阴影。适合组合展示内容块。
浮起卡片
使用第 1 层容器高度,并通过交互状态叠层增强视觉焦点。
描边卡片
清晰的 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 实现多边形变形,提供流畅的弹簧插值七形态动画:

不确定进度形态变换
容器内圆形变体
确定进度(68%)

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

流程编译80%
连续双线动画

5. 交互式 Svelte 5 岛屿#

声明为 client:visible 的组件会在进入视口时通过 IntersectionObserver 延迟 hydration:

5.1 按钮矩阵(Button.svelte)#

5.2 筛选芯片与分段按钮(Chips 和 SegmentedButton)#

M3E 筛选芯片
分段控件

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

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

5.4 输入控件(TextField.svelte)#

填充文本框
描边文本框

6. Markdown 扩展兼容性#

Shirone 的 SSOT unified 插件处理流程与所有 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 集成与 M3E 原子组件
https://tncloud.fun/posts/mdx-showcase/
作者
やわらかな光
发布于
2026-08-20
许可协议
CC BY-NC-SA 4.0

分享文章

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

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...