自定义组件手册:功能、用法与 consts.ts 配置
这篇文章用于快速了解主题内置组件,帮助你在不改动核心结构的前提下完成定制。
BaseHead.astro
功能
- 注入页面基础 SEO 信息、OG/Twitter 元信息、RSS 链接与主题初始化脚本。
使用方法
<BaseHead title="文章标题" description="页面描述" image={heroImage} />
consts.ts 如何设置
- 关联项:
SITE_TITLE - 用途:作为 RSS 标题和站点级信息来源。
可选参数
image?: ImageMetadata:可选,提供后会输出og:image与twitter:image。
Header.astro
功能
- 渲染顶部导航、社交链接与主题切换按钮。
使用方法
<Header />
consts.ts 如何设置
- 关联项:
SITE_TITLE、SOCIAL_LINKS SOCIAL_LINKS每项结构:label: 文本标签href: 外链地址icon: 图标键名(social/github、social/twitter、social/bilibili)
可选参数
- 无显式组件参数,依赖
consts.ts驱动。
HeaderLink.astro
功能
- 生成带“当前路径高亮”状态的导航链接。
使用方法
<HeaderLink href="/blog">Blog</HeaderLink>
consts.ts 如何设置
- 无直接关联项。
可选参数
- 继承原生
<a>属性,可传class、target等。
ThemeToggle.astro
功能
- 切换深色/浅色模式并同步到文档根节点 class。
使用方法
<ThemeToggle />
consts.ts 如何设置
- 无直接关联项。
可选参数
- 无组件参数。
SocialIcon.astro
功能
- 根据
icon键名渲染社交平台 SVG 图标。
使用方法
<SocialIcon icon="social/github" size={20} />
consts.ts 如何设置
- 常与
SOCIAL_LINKS[].icon搭配使用。
可选参数
size?: number:可选,默认为20。
Footer.astro
功能
- 渲染页脚版权信息、构建时间与社交链接。
使用方法
<Footer />
consts.ts 如何设置
- 关联项:
COPYRIGHT_NAME、SOCIAL_LINKS
可选参数
- 无组件参数。
FormattedDate.astro
功能
- 统一格式化日期展示,输出
<time>元素。
使用方法
<FormattedDate date={post.data.pubDate} />
consts.ts 如何设置
- 无直接关联项。
可选参数
- 无,
date为必填参数。
GitHubContribute.astro
功能
- 展示 GitHub 贡献区块标题与贡献日历组件。
使用方法
<GitHubContribute />
consts.ts 如何设置
- 关联项:
GH_CONTRIBUTE - 字段说明:
titledescriptionusernameprofileUrlerrorMessage
可选参数
- 无组件参数。
GitHubCalendarWidget.tsx
功能
- 基于
react-github-calendar渲染响应式贡献热力图,并自动跟随主题切换。
使用方法
<GitHubCalendarWidget client:load username="kevynf" errorMessage="加载失败" />
consts.ts 如何设置
- 该组件通常由
GitHubContribute.astro读取GH_CONTRIBUTE后间接调用。
可选参数
- 无可选参数,
username与errorMessage为必填。
CommentSection.astro
功能
- 按
COMMENTS配置动态加载 Giscus 评论区,并在亮暗主题切换时同步评论主题。
使用方法
<CommentSection />
consts.ts 如何设置
- 关联项:
COMMENTS - 关键字段:
enabledproviderreporepoIdcategorycategoryIdmappingthemeLightthemeDarklang
可选参数
- 无组件参数,全部通过
COMMENTS控制。
BlogPost 布局中的评论开关
BlogPost.astro 不是组件目录下的文件,但常与评论功能一起配置。
<BlogPost {...post.data} enableComments={true}>
<Content />
</BlogPost>
enableComments?: boolean为可选参数,默认false。- 如果你只想在部分页面开启评论,这个参数是最直接的开关。
Comments