跳至主要内容
返回

Astro 博客全组件与排版功能全景参考手册

10 分钟2.7k 字编辑页面
目录导航 (34)

欢迎查阅 Helian’s Blog 全组件与语法全景参考手册。

你可以把本篇文档当做日常博文写作的 组件字典与模板仓库。在这里,你可以直观查看所有组件的真实渲染效果,并直接复制对应的代码片段应用到你的新文章中。


目录索引


1. 基础排版与文本样式

本站基于 Tailwind Typography 进行了细致的字阶、行距与呼吸感调优:

文本修饰与强调

  • 粗体强调:**粗体文字**
  • 斜体强调:*斜体文字*
  • 删除线:~~删除线内容~~
  • 行内代码片段:\const x = 42;“
  • 超链接展示:[链接文本](URL)

引用块(Blockquote)

读书不是为了雄辩和驳斥,也不是为了轻信和盲从,而是为了思考和权衡。

—— 弗朗西斯·培根


2. 提示卡片(Callouts / Alerts)

原生支持 GitHub 与 Obsidian 风格的语义化 Callouts 提示块,帮助读者快速抓住核心信息:

Note

提示说明(NOTE):用于补充上下文背景、技术原理或通用说明信息。

Tip

技巧建议(TIP):提供最佳实践建议,例如“推荐使用 WebP 格式以获得更快的加载速度”。

Important

重要事项(IMPORTANT):需要读者特别注意的关键约束或必要前置条件。

Warning

警告提示(WARNING):提醒可能存在的兼容性差异、潜在风险或破坏性修改。

Caution

危险告诫(CAUTION):涉及数据丢失、私钥泄露等高危操作的明确告诫。


3. 现代代码高亮系统(Shiki)

采用 VS Code 同款的 Shiki 代码高亮引擎,支持文件名显示、行高亮、Diff 对比与一键复制代码:

文件名与行聚焦高亮

通过 file="filename" 标注文件名,通过 {line} 指定聚焦高亮行:

import { generateToken } from "@/utils/jwt";

export async function authenticate(userId: string): Promise<string> {
  const secretKey = process.env.JWT_SECRET;
  return await generateToken({ id: userId }, secretKey);
}auth.ts

代码修改对比(Diff)

在代码块语言后使用 diff,用 + 和 - 表示增删:

- const theme = "classic";
+ const theme = "astro-paper-minimal"; // 升级至极简现代主题astro.config.ts

多语言高亮支持(Python, Rust, Shell, JSON)

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello from Helian's Server"}server.py
# 构建静态站点并更新搜索索引
pnpm builddeploy.sh

4. 矢量图标库(astro-icon + Iconify)

无需引入字体包,构建时自动编译为内联 SVG,0 运行时客户端 JS 开销:

Lucide
Layers
GitHub
Bilibili
知乎
Terminal
Docs

使用方法:

import { Icon } from "astro-icon/components";

<Icon name="lucide:sparkles" class="size-5 text-accent" />
<Icon name="tabler:brand-github" class="size-5" />
<Icon name="simple-icons:bilibili" class="size-5 text-[#00A1D6]" />

5. 图片优化与灯箱缩放(Medium Zoom)

博文内的所有图片均支持 点击全屏聚焦预览:

  • 带有背景毛玻璃与暗色遮罩
  • 支持滚轮缩放、双击缩放、移动端双指捏合
  • 按 ESC 键或点击遮罩随时平滑退出

极简自然风光摄影


6. 音频与音乐播放组件

网易云音乐嵌入(<NetEaseMusic />)

支持官方单曲、专辑、歌单以及**社区/播客声音(电台节目)**嵌入,构建时全自动抓取曲名、艺术家与封面,无需手动填写:

示例 1:官方单曲(零配置,自动拉取曲名与歌手)

Wings of Courage -空を超えて- piano style - 川田まみ
在网易云打开

示例 2:社区声音 / 播客(只需填声音 ID 或分享链接)

Vivy -Fluorite Eyes Song- 第四话 插入歌「E P」 - 白fi
在网易云打开

示例 3:精选歌单(大卡片模式,带完整曲目列表与封面)

所以我回归了天空喜欢的音乐 - 创建者: 所以我回归了天空 · 共 279 首
在网易云打开

示例 4:原声专辑合集(増田俊郎《蟲師》原声大碟)

增田俊郎 蟲師 原声集 - 创建者: 安岛崇 · 共 162 首
在网易云打开
import NetEaseMusic from "@/components/mdx/NetEaseMusic.astro";

<!-- 1. 单曲:直接传入 ID(自动识别单曲) -->
<NetEaseMusic id="32098307" />

<!-- 2. 社区声音 / 播客:传入 type="program" 与声音 ID -->
<NetEaseMusic type="program" id="2488308450" />

<!-- 3. 精选歌单:传入 type="playlist" 与歌单 ID(450px 大卡片模式) -->
<NetEaseMusic type="playlist" id="2432266321" />

<!-- 4. 动画原声大碟 / 专辑集:直接传入对应原声歌单 ID -->
<NetEaseMusic type="playlist" id="821552897" />

自定义极简音频播放器(<AudioPlayer />)

适用于播客录音、背景白噪音或自建音效文件:

Relaxing Ambient BeatsHelian's Selection
import AudioPlayer from "@/components/mdx/AudioPlayer.astro";

<AudioPlayer
  src="https://example.com/audio.mp3"
  title="音频标题"
  artist="作者/演播者"
/>

7. 视频与多媒体嵌入

哔哩哔哩(Bilibili)高清响应式视频(<Bilibili />)

自适应 16:9 比例,支持暗黑模式自适应与移动端全屏播放:

视频 1:ReinaManager 视觉小说管理器

还在手动整理 gal?试试这款强大易用的视觉小说管理器——ReinaManager

视频 2:LunaBox Galgame 管理器

LunaBox——什么,你说你写了一个gal管理器,能分类能统计还能ai锐评自己?
import Bilibili from "@/components/mdx/Bilibili.astro";

<!-- 传入 B 站视频 BV 号与可选标题 -->
<Bilibili 
  bvid="BV12dKf6hEnR" 
  title="还在手动整理 gal?试试这款强大易用的视觉小说管理器——ReinaManager" 
/>

YouTube 极速懒加载视频(astro-embed)

采用 Facade 延迟加载技术,未点击前仅加载轻量海报,节省 1MB+ 流量:

Play
import { YouTube } from "astro-embed";

<YouTube id="dQw4w9WgXcQ" />

8. 社交媒体与帖子引用嵌入(知乎 / 小红书 / Reddit / X)

本站支持两种社交媒体引用方式:

  1. 自动同步与嵌入(astro-embed):原生支持 X (Twitter)、YouTube、LinkPreview 等,输入链接即可自动同步原帖内容与最新数据;
  2. 多平台卡片引用(<SocialEmbed />):专为国内外的知乎、小红书、Reddit、即刻等设计的高颜值摘要卡片。

1. 网页与博客文章动态自动同步(原生 <LinkPreview />)

自动抓取目标网站的 og:title、og:description 与高清封面配图:

import { LinkPreview } from "astro-embed";

<!-- 仅填文章链接即可自动同步网页标题、摘要与封面图 -->
<LinkPreview id="https://astro.build/blog/astro-4/" />

3. 国内外社区精选卡片(<SocialEmbed />)

知乎精选问答

小红书生活与技术随笔

Reddit 技术社区讨论

X (Twitter) 社区动态

import SocialEmbed from "@/components/mdx/SocialEmbed.astro";

<SocialEmbed
  platform="zhihu"
  author="知乎前端话题"
  title="如何评价前端框架 Astro?"
  content="Astro 是一款专注于内容驱动型网站的现代 Web 框架..."
  url="https://www.zhihu.com/question/470986701"
/>

9. GitHub 开源项目卡片

在博文中推荐开源项目或展示自己的代码仓库,支持自动调用 GitHub API 实时拉取 Star 数、Fork 数与仓库描述:

import GitHubCard from "@/components/mdx/GitHubCard.astro";

<!-- 仅填仓库名即可自动拉取 Star、Fork、语言与描述 -->
<GitHubCard repo="withastro/astro" />

<!-- 也可以自定义描述与主要语言覆盖 -->
<GitHubCard
  repo="SXP-Simon/SXP-Simon.github.io"
  description="Helian 的极简个人博客..."
/>

10. LaTeX 数学公式排版(KaTeX)

集成 remark-math 与 rehype-katex,支持严谨的学术与科学计算公式排版:

行内公式

行内引用如质能方程 E=mc2E = mc^2,以及欧拉恒等式 eiπ+1=0e^{i\pi} + 1 = 0。

复杂多行公式与微积分

∫−∞∞e−x2dx=π\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}

正态分布概率密度函数

f(x)=1σ2πe−12(x−μσ)2f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}

麦克斯韦方程组(微分形式)

∇⋅E=ρε0∇⋅B=0∇×E=−∂B∂t∇×B=μ0(J+ε0∂E∂t)\begin{aligned} \nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \\ \nabla \cdot \mathbf{B} &= 0 \\ \nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\ \nabla \times \mathbf{B} &= \mu_0\left(\mathbf{J} + \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t}\right) \end{aligned}

11. Mermaid 矢量流程图与时序图

在 Markdown 代码块中使用 mermaid 语言,即可自动将文本转为矢量图表,且自适应深浅色模式:

业务时序图(Sequence Diagram)

sequenceDiagram
    autonumber
    actor 读者 as 访客 / 读者
    participant 浏览器 as 浏览器
    participant 博客 as Helian's Blog
    participant 部署 as GitHub Pages

    读者->>浏览器: 输入 heliannuits.me
    浏览器->>部署: 请求静态 HTML & 样式
    部署-->>浏览器: 毫秒级返回极速页面 (0kb 多余 JS)
    浏览器-->>读者: 极简优雅的阅读界面
    读者->>博客: 点击图片放大 / 播放音乐 / 搜索文章
    博客-->>读者: 丝滑的交互反馈

系统流程图(Flowchart)

graph TD
    A["构思博文主题"] --> B{"选择写作格式"}
    B -->|纯文字/笔记| C["Markdown (.md)"]
    B -->|富媒体/组件交互| D["MDX (.mdx)"]
    C --> E["本地运行 pnpm dev 实时预览"]
    D --> E
    E --> F["Git Push 触发 GitHub Actions"]
    F --> G["自动发布至 heliannuits.me"]

12. 任务清单、表格与折叠详情

任务待办清单(Task List)

  • 克隆 GitHub 博客仓库并配置 Git
  • 搭建 Astro + AstroPaper 极简博客核心框架
  • 配置作者名称为 Helian 并绑定自定义域名 heliannuits.me
  • 配置 GitHub Actions 自动构建部署流(.github/workflows/deploy.yml)
  • 集成 astro-icon 与 20万+ 矢量图标库
  • 集成图片灯箱缩放、LaTeX 数学公式与 Mermaid 流程图
  • 编写组件全景参考手册 Demo Page

响应式表格(Table)

组件分类支持生态 / 方案渲染机制客户端性能开销
矢量图标Lucide / Tabler / Simple Icons构建时内联 SVG0 KB JS
数学公式KaTeX / LaTeX服务端预编译 HTML0 KB JS
流程图Mermaid.js客户端按需异步加载极轻量
视频/音频Bilibili / YouTube / 网易云响应式自适应 iframe / HTML5懒加载
代码高亮Shiki (VS Code 同款)服务端静态生成高亮标记0 KB JS
全文检索Pagefind WASM静态离线生成轻量索引毫秒级秒开

折叠详情卡片(Details / Accordion)

点击展开查看博文 Frontmatter 编写模版
---
author: Helian
pubDatetime: 2026-08-20T16:00:00Z
title: 我的新文章标题
featured: true
draft: false
tags:
  - 技术
  - 随笔
description: 一句话概述本文核心要点
---

从这里开始撰写正文内容...

13. Frontmatter 博文配置参数速查

在每篇 .md 或 .mdx 文章顶部,可通过 Frontmatter 定义以下字段:

字段名称类型必填默认值详细说明
titlestring是-文章主标题(显示在文章顶部与列表卡片中)
authorstring否Helian文章作者(未填时默认使用全局配置)
pubDatetimeDate是-发布时间(格式推荐 2026-08-20T16:00:00Z)
modDatetimeDate否null最近修改时间(若填写会额外显示“更新于”)
descriptionstring是-文章摘要(用于 SEO 描述、列表简介与社交卡片)
tagsstring[]否["others"]文章标签列表(自动生成标签聚合页与筛选)
featuredboolean否false是否置顶在首页的“精选文章”区域
draftboolean否false是否为草稿(设为 true 时生产构建自动隐藏)
ogImagestring否动态生成自定义社交分享封面图(若未提供会自动生成)
hideEditPostboolean否false是否隐藏文章底部的“在 GitHub 编辑此页”链接

欢迎随时复制本手册中的代码片段开始撰写你的新文章!


编辑页面