Level-two heading
Level-two heading
正文从 `##` 开始(不写 `#`),因为页面级 `<h1>` 已由 Hero 组件根据 `title` 字段生成,正文标题从 h2 起步可以避免语义上的一级标题重复。
### 3.2 引用块(Blockquote)
```markdown
> Tell me and I forget. Teach me and I remember. Involve me and I learn.
在 详情页的 scoped 样式 中,blockquote 被定制为品牌化呈现:更大的字号(--text-lg)、品牌字体 --font-brand、600 字重、左侧 0.25rem 的强调色竖线 border-inline-start,在 ≥50em 的宽屏下进一步放大到 --text-2xl。这是 Astro 组件内 <style> 标签 + :global() 选择器作用于 Markdown 生成 HTML 的典型例子。
3.3 正文段落与内联 HTML 链接
正文段落中直接混入了一个内联 HTML 锚点:
Lorem ipsum dolor sit amet, <a href="…">Astro</a> makes people happy. …
这演示了 Markdown 允许内嵌原始 HTML 的能力。Astro 的 Markdown 管线会把该锚点原样保留进输出 HTML,因此它会自动继承详情页中 .content :global(a) 的样式——半透明下划线 text-decoration: 1px solid underline transparent,hover/focus 时 text-decoration-color 过渡为 currentColor。
3.4 三级与四级标题
### Level-three heading
(两个三级标题,分别引导两段不同长度的 Lorem ipsum 正文)
#### Level-four heading
详情页样式对 h1–h5 统一设置了 margin: 1.5rem 0,并对内容区做了 max-width: 65ch 的正文宽度约束(.content { max-width: 65ch; margin-inline: auto; }),保证长段落的可读性。
3.5 无序列表
文件以两个列表项收尾:
- We noted this
- And also this other point
这对应本案例“介绍 Markdown 格式”的定位——像侦探游戏一样引导读者识别各个语法元素。
此外还有一个值得注意的整体排版细节:详情页样式里 .content > :global(* + *) { margin-top: 1rem; } 为正文中相邻兄弟元素统一了 1rem 的垂直间距,因此正文中各元素无需手动空行调距,层级结构完全交给 CSS。
4. 集合加载:glob 加载器如何“捡到”这个文件
content.config.ts 定义了 work 集合的加载方式:
import { defineCollection } from 'astro:content';
import { glob } from 'astro/loaders';
import { z } from 'astro/zod';
export const collections = {
work: defineCollection({
// Load Markdown files in the src/content/work directory.
loader: glob({ base: './src/content/work', pattern: '**/*.md' }),
schema: z.object({
title: z.string(),
description: z.string(),
publishDate: z.coerce.date(),
tags: z.array(z.string()),
img: z.string(),
img_alt: z.string().optional(),
}),
}),
};
三个关键点,都能从 markdown-mystery-tour.md 的实际情况得到印证:
base: './src/content/work':以该目录为基准扫描,markdown-mystery-tour.md的直接文件名即其id(markdown-mystery-tour);pattern: '**/*.md':递归匹配所有子目录。这解释了为什么 nested/duvet-genius.md 也能被加载——从 glob 模式推断,子目录中的文件会以带目录的id(如nested/duvet-genius)进入集合;- Zod Schema 校验:第 2 节表格中的六个字段在构建时逐一校验,
publishDate经z.coerce.date()转为真正的Date,供后续排序使用。
5. 路由与渲染:从 Markdown 文件到详情页
work/[...slug].astro 是该文件的最终消费者,核心逻辑只有三步:
export async function getStaticPaths() {
const work = await getCollection('work');
return work.map((entry) => ({
params: { slug: entry.id },
props: { entry },
}));
}
const { entry } = Astro.props;
const { Content } = await render(entry);
getStaticPaths:遍历work集合,每个条目的id直接作为[...slug]参数。由于是 rest 路由([...slug]),嵌套id(如nested/duvet-genius)可以推断地映射为/work/nested/duvet-genius这样的多级路径;render(entry):把该 Markdown 条目编译为可渲染的Content组件,正文 HTML 在模板中以<Content />注入.content容器内,外层套.stack gap-10布局;- Frontmatter 字段的消费点:
entry.data.title传给Hero与BaseLayout的title/description;entry.data.tags渲染为 Pill 标签组;entry.data.description渲染为说明段落;entry.data.img与img_alt渲染为头图<img>,并带圆角、阴影与渐变背景(.content :global(img)样式)。
也就是说,markdown-mystery-tour.md 一个文件同时提供了“页面元数据(Frontmatter)+ 页面主体(正文 Markdown)”,而页面外壳(导航、布局、CTA)全部由 Astro 组件承担——这正是内容驱动站点的标准分工。
6. 列表页如何消费同一份数据
work.astro 展示同一集合的另一面用法:
const projects = (await getCollection('work')).sort(
(a, b) => b.data.publishDate.valueOf() - a.data.publishDate.valueOf(),
);
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00