Markdown / MDX 写作指南

本文介绍了 Markdown 常用语法、 Astro Plain 集成的 Expressive Code、GitHub 风格提示块,以及来自 Starlight 的 MDX 组件的使用方法。

阅读时间: 12分钟
作者:

Markdown 常用语法

标题

Markdown 使用 # 至 ###### 表示 1~6 级标题:

一级标题 (H1)

二级标题 (H2)

三级标题 (H3)

四级标题 (H4)

五级标题 (H5)
六级标题 (H6)

文本格式

预览Markdown
加粗文本**加粗文本**__加粗文本__
斜体文本*斜体文本*_斜体文本_
加粗与斜体***加粗与斜体***
删除线~~删除线~~
行内代码`行内代码`
Ctrl + C<kbd>Ctrl</kbd> + <kbd>C</kbd>

引用与嵌套引用

这是一段基础引用。

这是嵌套在内部的二级引用文本。

引用内同样支持 加粗行内代码

列表与任务清单

无序列表

  • 项目一
    • 子项目 A
    • 子项目 B
  • 项目二

有序列表

  1. 第一阶段:环境准备
  2. 第二阶段:开发构建
  3. 第三阶段:部署发布

任务清单 (Task Lists)

  • 已完成的核心特性设计
  • 静态多语言与 i18n 路由
  • 正在进行的文档补充与优化

表格与对齐

左对齐表头居中表头右对齐表头
AstroSSG / SSR快速加载
Expressive Code语法高亮多主题支持
Pagefind全文搜索静态站点支持

链接与图片

外部链接:访问 Astro 官网 (在新窗口打开)

相对路径站内链接:查看项目介绍

图片:文章封面

TIP

在 MDX 文档中使用 Astro 的 Image 或 Picture 组件,可以利用 Astro 提供的图片优化功能,例如自动生成尺寸、格式转换和懒加载等。

封面图片

GitHub 风格提示块 (BlockquoteAlerts)

基于 remark-github-blockquote-alert (在新窗口打开), 可以使用 > [!TYPE] 语法创建不同类型的提示块:

NOTE

用于记录常规背景、上下文或补充知识。

TIP

提供有助于提升开发效率或改善体验的技巧。

IMPORTANT

强调用户必须知晓或不可忽略的关键信息。

WARNING

提示可能导致构建失败或非预期行为的注意事项。

CAUTION

告诫可能造成数据丢失、安全隐患的重大风险。

脚注 (Footnotes)

这是一个带有脚注的句子1

脚注也可以包含多行内容2


代码高亮

本项目使用 Expressive Code (在新窗口打开) 作为代码高亮方案。

代码块标题

在代码块元信息中添加 title="..." 可以渲染代码块顶部标题 :

src/utils/math.ts
export function calculateSum(a: number, b: number): number {
return a + b;
}

行号和代码行高亮

使用 showLineNumbers 开启行号显示,通过 {行号范围} 高亮指定的代码行:

src/services/api.ts
export async function fetchData(endpoint: string) {
const url = `https://api.example.com/${endpoint}`;
try {
const response = await fetch(url);
const data = await response.json();
return data;
} catch (error) {
console.error("Fetch failed:", error);
throw error;
}
}

代码差异与增删标记

使用 ins={...}del={...} 标记新增或删除的行:

package.json
{
"name": "my-astro-blog",
"version": "1.0.0",
"version": "2.0.0"
}

或者使用 diff 代码块:

git diff site.config.ts
export default {
allowRobots: false,
allowRobots: true,
postsPerPage: 10,
};

文本高亮

可以使用 ins="文本"del="文本" 或直接使用 "关键词" 高亮代码中的特定文本:

app.js
const express = require("express");
const app = express();
const port = 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});

代码折叠

长代码可使用 collapse={起始行-结束行} 将指定行默认折叠:

long-script.ts
import { defineCollection, z } from "astro:content";
7 collapsed lines
// 包含大量字段定义的 Schema
const baseSchema = z.object({
id: z.string(),
createdTime: z.date(),
updatedTime: z.date(),
status: z.enum(["draft", "published", "archived"]),
});
export const collections = {
posts: defineCollection({ schema: baseSchema }),
};

终端样式

使用 frame="terminal" 将代码块渲染为终端窗口样式,并显示标题栏和操作按钮:

安装并启动
# 克隆模板仓库
git clone https://github.com/Aaakul/astro-plain.git my-blog
# 进入目录并安装依赖
cd my-blog
pnpm install
# 启动本地开发服务
pnpm dev

内置 MDX 组件

.mdx 文件中,以下组件已全局注册,无需手动导入即可使用。

步骤组件

<Steps> 用于编写按步骤组织的操作指南,并自动为每个步骤添加编号。它支持嵌套段落、代码块和选项卡。

基础用法

  1. 第一步:克隆代码仓库到本地计算机。
  2. 第二步:在项目根目录下安装依赖包。
  3. 第三步:执行 dev 命令开启实时预览。

组合使用

  1. 编辑配置文件

    编辑 site.config.ts

    site.config.ts
    export default {
    siteUrl: "https://example.com",
    defaultLanguage: "zh-Hans",
    };
  2. 安装依赖

    根据你的习惯选择一个包管理器:

    Terminal window
    bun install
  3. 启动开发服务器

    启动开发服务器后,终端会输出访问地址或端口号,打开浏览器即可预览。


文件树组件

<FileTree> 能够生成具有层次缩进与文件类型图标的目录树结构。

功能:

  • 目录标识:名称末尾加斜杠 /(如 src/)表示目录;
  • 高亮特定文件/目录:使用加粗语法 **文件名**
  • 行尾说明:在文件名后添加空格和说明文字;
  • 省略号占位:使用 ... 表示省略的多余文件。
  • 目录i18n/
    • 目录messages/ 各语言翻译字典
      • zh-Hans.ts 中文字典
      • en-US.ts 英文字典
      • ja-JP.ts 日文字典
  • 目录src/content/
    • 目录blog/ 博客文章(通过 translationKey 关联)
    • 目录author/ 作者信息(按语言划分文件夹)
    • 目录project/ 项目介绍(按语言划分文件夹)
    • 目录mdx/ 其他 MDX 内容(按语言划分文件夹)
      • 目录[lang]/
        • hero.mdx 首屏区域(Hero Section)
  • site.config.ts 站点核心参数配置文件

选项卡组件

<Tabs><TabItem> 用于将同一内容的不同版本或相关选项组织在选项卡中。

图标与跨组件联动同步 (syncKey)

使用相同 syncKey<Tabs> 会共享当前选项。用户在其中一个选项卡中切换后,其他具有相同 syncKey 的选项卡也会同步更新。

Terminal window
bun --bun run dev
Terminal window
bun install
<Tabs syncKey="pkg-manager">
<TabItem label="Bun" icon="bun">
```bash
bun --bun run dev
```
</TabItem>
15 collapsed lines
<TabItem label="pnpm" icon="pnpm">
```bash
pnpm run dev
```
</TabItem>
<TabItem label="npm" icon="npm">
```bash
npm run dev
```
</TabItem>
</Tabs>

Footnotes

  1. 这是单行脚注的说明内容。

  2. 这是多行脚注的第一行。 这是多行脚注的第二行内容。

最后修改于: