Skip to content

组件总览

vitepress-theme-ninc 内置的全部组件与页面视图,按功能分类索引。 所有组件均在主题包 src/client/components/src/client/views/ 下,通过 unplugin-vue-components 自动注册,用户无需手动 import。

自动注册机制

主题包通过 unplugin-vue-components 扫描以下目录,自动注册所有 .vue 组件:

扫描目录说明
vitepress-theme-ninc/client/components/主题包内置组件
vitepress-theme-ninc/client/views/主题包内置页面视图
<你的项目>/.vitepress/theme/components/用户自定义组件
<你的项目>/.vitepress/theme/views/用户自定义视图

在 Markdown 中使用

组件自动注册后,可在任意 .md.vue 文件中直接使用,无需 import:

vue
<SvgIcon name="github" />

也可通过 @/ 别名导入主题组件(@ 指向主题包 src/client/):

vue
<script setup>
import Home from '@/views/Home.vue'
</script>

布局视图

位于 views/ 目录,作为 VitePress 的 Layout 组件,由主题入口 client/index.ts 统一调度。

组件文件路径说明
Homeviews/Home.vue首页布局(文章列表 + 侧边栏 + 顶部区域)
Postviews/Post.vue文章详情页布局
Pageviews/Page.vue普通页面布局(无文章信息)
NotFoundviews/NotFoundPage/NotFound.vue404 页面
Redirectviews/Redirect.vue外链中转页
Archivesviews/Archives.vue归档页
CatOrTagviews/CatOrTag.vue分类/标签页(动态路由)
Equipmentviews/Equipment.vue装备展示页
CommentsViewviews/CommentsView.vue留言板页
Aboutviews/About.vue关于页
Projectviews/Project.vue项目展示页

首页顶部

位于 views/home_top/,构成首页顶部的展示区域。

组件文件路径说明
HomeTopviews/home_top/HomeTop.vue顶部区域容器(标题 + 横幅 + 快捷分类)
TopGroupviews/home_top/TopGroup.vue顶部横幅推荐站点
TagsGroupAllviews/home_top/TagsGroupAll.vue快捷分类入口标签组

导航与菜单

组件文件路径说明
Navcomponents/Nav.vue顶部导航栏(含下拉菜单与左侧更多菜单)
MobileMenucomponents/MobileMenu.vue移动端汉堡菜单
Paginationcomponents/Pagination.vue文章分页
NextPostcomponents/NextPost.vue下一篇文章导航
RelatedPostcomponents/RelatedPost.vue相关文章推荐
ScrollProgresscomponents/ScrollProgress.vue页面滚动进度条
RightMenucomponents/RightMenu.vue右键上下文菜单
Searchcomponents/Search.vue全站搜索(Algolia)
Settingscomponents/Settings.vue左下角个性化设置面板

侧边栏

位于 components/Aside/,由 Aside/index.vue 统一调度各 Widget。

组件文件路径说明
Asidecomponents/Aside/index.vue侧边栏容器
Hellocomponents/Aside/Widgets/Hello.vue站点简介
Welcomecomponents/Aside/Widgets/Welcome.vue欢迎信息(含地图)
Toccomponents/Aside/Widgets/Toc.vue文章目录
Tagscomponents/Aside/Widgets/Tags.vue标签云
Countdowncomponents/Aside/Widgets/Countdown.vue倒计时
SiteDatacomponents/Aside/Widgets/SiteData.vue站点统计
Clockcomponents/Aside/Widgets/Clock.vue时钟
Datecomponents/Aside/Widgets/Date.vue日期
ArticleGPTcomponents/Aside/Widgets/ArticleGPT.vue文章摘要(模仿 GPT 样式,内容手动填写)
WeiXinCarkcomponents/Aside/Widgets/WeiXinCark.vue微信二维码卡片

文章相关

组件文件路径说明
PostHeaderviews/PostHeader.vue文章头部(标题 + 元信息 + 封面)
Copyrightcomponents/Copyright.vue版权声明
Referencescomponents/References.vue参考资料
CryptoContentcomponents/CryptoContent.vue加密文章内容(密码验证后显示)
RewardBtncomponents/RewardBtn.vue打赏按钮

列表

位于 components/List/

组件文件路径说明
PostListcomponents/List/PostList.vue文章列表项
TypeBarcomponents/List/TypeBar.vue分类/标签筛选条

评论系统

位于 components/Plugins/Comments/

组件文件路径说明
Commentscomponents/Plugins/Comments/index.vue评论容器(Twikoo)
Twikoocomponents/Plugins/Comments/Twikoo.vueTwikoo 评论

多媒体与插件

组件文件路径说明
Playercomponents/Player.vue音乐播放器(APlayer + MetingJS)
LottieIconcomponents/LottieIcon.vueLottie 动画图标
SvgIconcomponents/SvgIcon.vueSVG 雪碧图图标
Bannercomponents/Banner.vue横幅广告位

组件 Demo 不是独立组件

文章中的组件演示由 vitepress-demo-plugin 以 Markdown 插件形式提供(在 defineConfig 内部通过 md.use(vitepressDemoPlugin) 注册),主题包内不存在 Demo.vue 文件。在 Markdown 中用 ::: demo 容器即可嵌入交互式 demo,无需手动导入组件。

页脚

组件文件路径说明
Footercomponents/Footer.vue页脚容器
FooterAnimalscomponents/FooterAnimals.vue页脚动物动画
FooterBadgecomponents/FooterBadge.vue页脚徽标(shields.io)
FooterLinkcomponents/FooterLink.vue页脚站点地图链接

通用组件

组件文件路径说明
Backgroundcomponents/Background.vue背景装饰
Badgecomponents/Badge.vue通用徽标
Controlcomponents/Control.vue控制面板
LazyLoadercomponents/LazyLoader.vue懒加载容器
Loadingcomponents/Loading.vue加载动画
LoadingCapsulecomponents/LoadingCapsule.vue胶囊加载动画
MacCardcomponents/MacCard.vueMac 风格卡片
Messagecomponents/Message.vue全局消息提示
Modalcomponents/Modal.vue模态框
SafariMockUpcomponents/SafariMockUp.vueSafari 浏览器模型框
UtilPageTitlecomponents/UtilPageTitle.vue工具页标题

标签与卡片

位于 components/Tags/

组件文件路径说明
LinkCardcomponents/Tags/LinkCard.vue链接卡片
LinkCardReprintcomponents/Tags/LinkCardReprint.vue转载链接卡片
Checkboxcomponents/Tags/Checkbox.vue复选框标签
Slidercomponents/Tags/Slider.vue滑块标签

工具页视图(不随主题包分发)

工具页不在主题包内

以下工具页(NES 模拟器、代码对比、键码速查、KMS、妙控键盘、SCSS 转 CSS)不随主题包分发,仅作为本仓库 blog/ 站点的演示内容存在。它们依赖的 nes-vuev-code-diffsass.jscodejar 等扩展依赖也未列入主题包。

若你希望实现类似功能,可参考 blog/.vitepress/theme/views/util-pages/ 下的实现:在 .vitepress/theme/views/ 下自行创建扩展页面组件,按需安装对应依赖,并在 Markdown 中显式导入使用。详见 安装 - 关于扩展页面与小工具

下表列出 blog/ 中的工具页组件,供参考实现:

组件blog 内路径说明
AllKeyCodeblog/.vitepress/theme/views/util-pages/AllKeyCode.vue全键盘按键码速查
CodeCompareblog/.vitepress/theme/views/util-pages/CodeCompare.vue代码对比工具
KmsWindowsblog/.vitepress/theme/views/util-pages/KmsWindows.vueKMS 激活密钥查询
MagicKeyboardblog/.vitepress/theme/views/util-pages/MagicKeyboard.vueMagic Keyboard 键位图
NesGameblog/.vitepress/theme/views/util-pages/NesGame.vueNES 游戏模拟器
SassToCssContainerblog/.vitepress/theme/views/util-pages/SassToCssContainer.vueSCSS 转 CSS 工具

404 页面

位于 views/NotFoundPage/

组件文件路径说明
NotFoundviews/NotFoundPage/NotFound.vue404 主页面
Codeviews/NotFoundPage/Code.vue404 代码动画
NotFoundNumviews/NotFoundPage/NotFoundNum.vue404 数字动画

覆盖组件

如需覆盖主题组件,请在 .vitepress/theme/index.ts 中扩展 Theme 对象:

ts
import Theme from 'vitepress-theme-ninc'
import MyLayout from './MyLayout.vue'

export default {
  ...Theme,
  Layout: MyLayout
}

详见 覆盖组件指南

相关文档

最后更新:

基于 MIT 许可发布