跳至主要内容
Helian's Blog
返回

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

编辑页面

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

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


目录索引


1. 基础排版与文本样式

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

文本修饰与强调

引用块(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)

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

极简自然风光摄影


6. 音频与音乐播放组件

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

支持单曲与歌单卡片嵌入,无需离开博文即可在线试听(示例为川田まみ《Wings of Courage -空を超えて-》):

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

<!-- 传入网易云歌曲 ID(支持单曲与歌单) -->
<NetEaseMusic id="32098307" />

自定义极简音频播放器(<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 比例,自动适配移动端与暗黑主题:

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

<!-- 传入 B站视频 BV 号即可 -->
<Bilibili bvid="BV1xx411c7mD" />

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:titleog: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-mathrehype-katex,支持严谨的学术与科学计算公式排版:

行内公式

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

复杂多行公式与微积分

ex2dx=π\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}

正态分布概率密度函数

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

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

E=ρε0B=0×E=Bt×B=μ0(J+ε0Et)\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)

响应式表格(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-文章主标题(显示在文章顶部与列表卡片中)
authorstringHelian文章作者(未填时默认使用全局配置)
pubDatetimeDate-发布时间(格式推荐 2026-08-20T16:00:00Z
modDatetimeDatenull最近修改时间(若填写会额外显示“更新于”)
descriptionstring-文章摘要(用于 SEO 描述、列表简介与社交卡片)
tagsstring[]["others"]文章标签列表(自动生成标签聚合页与筛选)
featuredbooleanfalse是否置顶在首页的“精选文章”区域
draftbooleanfalse是否为草稿(设为 true 时生产构建自动隐藏)
ogImagestring动态生成自定义社交分享封面图(若未提供会自动生成)
hideEditPostbooleanfalse是否隐藏文章底部的“在 GitHub 编辑此页”链接

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


编辑页面
分享这篇文章:

上一篇
欢迎来到 Helian 的个人博客