Krab logoKrab
核心概念

自定义

学习如何覆盖 Docus 内置组件来自定义文档。

Docus 构建在 Nuxt 4 之上,Nuxt 4 提供灵活的组件 layer 系统,允许你在自己的应用中重新定义特定组件来覆盖部分 UI。这样你无需修改核心主题,就能轻松完整地自定义文档的视觉外观和行为。

要覆盖组件,只需在 components/ 目录中创建同名 Vue 文件。Docus 会自动使用你的版本替代默认组件。

App Header

你可以通过覆盖以下组件来自定义页眉的不同部分:

对于修改 Logo 尺寸这类简单调整,可以在 app.config.ts 中使用 logo.class 选项,无需覆盖组件(例如 class: 'h-8')。

要完全替换页眉中的默认 Logo,请创建 components/AppHeaderLogo.vue 文件。你的组件会替换 Docus 主题提供的默认组件。你可以使用 useLogoAssets() composable 保留带复制和下载操作的右键上下文菜单。

默认组件代码

AppHeaderLeft

Logo 位于默认首页链接包装器中。如果你想修改该链接(URL、属性)或 AppHeaderLogo 周围的布局,请改为覆盖 components/AppHeaderLeft.vue

默认组件代码

AppHeaderCTA

要自定义页眉中的行动号召区域(例如添加 “Get Started” 按钮或外部链接),请覆盖 components/AppHeaderCTA.vue 组件。

默认情况下该组件为空,但你可以查看 Docus 文档自身是如何覆盖它的。

AppHeaderCenter

要自定义页眉中间区域,请覆盖 components/AppHeaderCenter.vue 组件。你的组件会替换 Docus 主题提供的搜索栏。

默认组件代码

AppHeaderBody

默认情况下,在移动端打开菜单时,Docus 会使用 ContentNavigation 组件把 content/ 文件夹树显示为菜单。你可以用 components/AppHeaderBody.vue 组件覆盖这个菜单,并填充移动端页眉下方的菜单主体。

默认组件代码

AppHeaderBottomRight

navigation.sub 设置为 'header' 时,Docus 会在页眉下方渲染二级标签栏。要在该栏右侧添加自定义内容(例如开关或徽章),请创建 components/AppHeaderBottomRight.vue 组件。

要完全替换子导航栏,请改为覆盖 AppHeaderBottom.vue 组件。
如果想全局自定义页眉,可以考虑使用自己的布局。

你可以通过覆盖以下组件来自定义页脚的不同部分:

AppFooterLeft

要替换页脚左侧,请创建 components/AppFooterLeft.vue 文件。你的组件会替换 Docus 主题提供的默认组件。

默认组件代码

AppFooterRight

要替换页脚右侧,请创建 components/AppFooterRight.vue 文件。你的组件会替换 Docus 主题提供的默认组件。

默认组件代码
如果想全局自定义页脚,可以考虑使用自己的布局。

Docs

你也可以自定义文档页面的页眉和左右侧栏。

在文档页面页眉右侧,Docus 默认会显示一个下拉菜单,包含与当前页面 Markdown 源文件相关的快捷操作。它允许读者:

  • 复制原始 .md 文件的直接链接到剪贴板。
  • 在新浏览器标签页中查看 Markdown 源文件
  • 在 ChatGPT 或 Claude 中打开页面内容,并预填用于分析 Markdown 文件的 prompt。

这些操作对贡献者、读者或 AI 辅助工作流尤其有用,但你也可以创建自己的 components/DocsPageHeaderLinks.vue 组件来覆盖它。

默认组件代码

DocsAsideRight

要完全替换文档页面右侧栏,请创建 components/DocsAsideRight.vue 组件。

默认组件代码

DocsAsideRightBottom

要自定义文档页面右侧栏底部,可以创建 components/DocsAsideRightBottom.vue 组件。你的组件会替换 Docus 主题提供的默认底部目录区域。

默认组件代码

DocsAsideLeftTop

要自定义文档页面左侧栏顶部,可以创建 components/DocsAsideLeftTop.vue 组件。

默认情况下该组件为空,但你可以查看 Nuxt Image 文档自身是如何覆盖它的。

DocsAsideLeftBody

要自定义文档页面左侧栏主体,可以创建 components/DocsAsideLeftTop.vue 组件。你的组件会替换 Docus 主题提供的默认文件导航。

默认组件代码

自定义图标

Docus 使用 Nuxt IconIconify provider,让你开箱即可访问数千个图标(例如 i-lucide-arrow-righti-simple-icons-github)。

要添加自己的图标,请把 SVG 文件放到应用的 assets/icons/ 目录中。它们会自动注册到 custom 前缀下,并可在项目任意位置使用。

assets/
  icons/
    my-logo.svg

然后你可以使用 i-custom: 前缀引用它们:

content/getting-started.md
---
navigation:
  icon: i-custom:my-logo
---
app.config.ts
export default defineAppConfig({
  toc: {
    bottom: {
      links: [{
        icon: 'i-custom:my-logo',
        label: 'Preview',
        to: '/preview'
      }]
    }
  }
})
components/MyComponent.vue
<template>
  <UIcon name="i-custom:my-logo" />
</template>
SVG 文件应为 fills 和 strokes 使用 currentColor,这样图标就能适配文本颜色。
Copyright © 2026 Powered by Docus