VueVitePress博客

vitepress-theme-concise — Vue 博客模板

作者 YoungsunLi

基于 VitePress 默认主题派生的卡片式博客主题,提供首页分页、归档、标签、Atom 订阅与可选 giscus 评论。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-01查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

卡片式首页与分页,支持 /page/2/ 形式的翻页地址

02

按年归档页、标签索引与单个标签页,未写标签的文章不出现标签

03

草稿标记 draft: true,开发环境可见但构建不收录

04

配置 hostname 后生成 Atom 订阅 feed.xml、sitemap 与 og 标签

05

可选 giscus 评论,存放在 GitHub Discussions,不配置则不显示评论区

06

正文图片点击放大,界面文案默认中文且可覆盖,颜色与尺寸使用 CSS 变量

模板详细介绍

vitepress-theme-concise 是一个派生自 VitePress 默认主题的博客主题,用卡片式首页呈现文章列表,并在此基础上补充博客常用页面与功能。它面向使用 VitePress 搭建个人博客的场景,文章以 Markdown 文件放在指定目录中,地址按文件名生成。

主题提供卡片式首页与分页(如 /page/2/)、按年归档页、标签索引与单个标签页;文章页显示发布日期和上一篇/下一篇。frontmatter 全部可选:标题缺省取正文第一个一级标题,日期缺省取 git 首次提交时间,标签缺省则不出现标签。草稿通过 draft: true 标记,开发环境可见、构建不收录。

订阅与元信息方面,配置 hostname 后生成 Atom 订阅 feed.xml、sitemap 与 og 标签。评论使用 giscus,存放在 GitHub Discussions 中,不配置则不显示评论区;评论区仅出现在文章页,滚动到底部才加载,明暗模式跟随站点。

主题还包含正文图片点击放大、系统字体栈、h2 下划线、左侧粗边框提示容器、深色代码块等排版处理,并补齐深色模式。界面文案默认中文,可在 defineConcise 中覆盖;颜色与尺寸通过 CSS 变量调整,组件也可单独导入使用。

限制方面:3.x 面向 VitePress,需要 Node 22+;VuePress 1.x 版本需使用 v1.0.0 分支。发布日期依赖 git 历史,CI 中需设置 fetch-depth: 0,浅克隆会退回文件修改时间。

VueVitePress博客

适合你的项目吗?

适用场景

  • 用 VitePress 搭建个人博客,希望首页以卡片列表展示文章
  • 需要按年归档、按标签浏览文章,并希望有 Atom 订阅
  • 希望文章 frontmatter 尽量少写,标题、日期、标签都有缺省规则
  • 想在文章页接入基于 GitHub Discussions 的评论,且不配置时不影响站点

适合人群

  • 使用 VitePress 并接受派生主题配置方式的开发者
  • 以 Markdown 写作、文章放在固定目录的个人博客作者
  • 需要归档、标签、订阅等博客常用页面的站点
  • 希望评论可选、默认不引入第三方评论服务的项目

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    安装依赖:npm install vitepress-theme-concise

  2. 2

    3.x 需要 Node 22+;VuePress 1.x 版本请使用 v1.0.0 分支

  3. 3

    在 docs/.vitepress/concise.mts 中声明文章目录、每页文章数与 hostname

  4. 4

    在 docs/.vitepress/config.mts 中用 concise.config() 包装站点配置,并在主题入口使用 createConciseTheme

  5. 5

    发布日期依赖 git 历史,CI 中需设置 fetch-depth: 0,否则会退回文件修改时间

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 评论功能依赖第三方服务 giscus,评论数据存放在你自己的 GitHub 仓库 Discussions 中,读者需使用 GitHub 账号才能评论;不配置 giscus 则不显示评论区。
  • 3.x 版本仅面向 VitePress,且运行环境需要 Node 22 及以上;若使用 VuePress 1.x,必须改用 v1.0.0 分支版本。
  • 文章发布日期依赖 git 提交历史,在 CI 中必须设置 fetch-depth: 0;若使用浅克隆,日期会退回为文件修改时间。
  • 启用评论需在 giscus.app 上填写仓库名并获取 repoId 与 categoryId,同时需在博客仓库开启 Discussions 并安装 giscus App。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

评论用 [giscus](https://giscus.app),存在你 GitHub 仓库的 Discussions 里,读者用 GitHub 账号评论

README 原文

3.x 面向 **VitePress**,需要 Node 22+。VuePress 1.x 版本请用 [`v1.0.0`](https://github.com/YoungsunLi/vitepress-theme-concise/tree/v1.0.0)。

README 原文

发布日期依赖 git 历史,CI 中需设置 `fetch-depth: 0`(浅克隆会退回文件修改时间)。

README 原文

到 [giscus.app](https://giscus.app) 填仓库名,拿到 `repoId` 与 `categoryId`。

README 原文
https://github.com/YoungsunLi/vitepress-theme-concise/blob/master/LICENSEhttps://github.com/YoungsunLi/vitepress-theme-concise/blob/master/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-01。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 88 / 100
技术栈
Vue · VitePress
网站类型
博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-09-14
截图检查日期
2026-10-01

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Vue。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

已完成服务器许可规则与 AI 来源核对;未经过人工编辑审核。

查看当时使用的来源资料

SHA-256: 5f9742e6e9d9fe30e3e326627cc8b38205c485cdc0fd09cf0820b77809b35a46

2026-10-01T03:54:29.291Z

来源文件 / 仓库
# vitepress-theme-concise

卡片式首页呈现的 VitePress 博客主题。

这是一个**派生主题**,继承 VitePress 默认主题,在其之上提供:

- 卡片式首页与分页(`/page/2/`)
- 归档页(按年)、标签页;不写标签就不出现标签
- 文章页的发布日期、上一篇/下一篇
- 草稿:`draft: true` 的文章 dev 可见、构建不收录
- Atom 订阅 `feed.xml`、sitemap、og 标签
- 正文图片点击放大
- 评论(giscus,存在 GitHub Discussions 里),不配就没有评论区
- 经典排版手感:系统字体栈、`h2` 下划线、左侧粗边框的提示容器、深色代码块
- 主题色 `#2050FF`,并补齐了深色模式

> 3.x 面向 **VitePress**,需要 Node 22+。VuePress 1.x 版本请用 [`v1.0.0`](https://github.com/YoungsunLi/vitepress-theme-concise/tree/v1.0.0)。

## 安装

```bash
npm install vitepress-theme-concise
```

## 使用

**1. 声明文章目录** —— `docs/.vitepress/concise.mts`

```ts
import { defineConcise } from 'vitepress-theme-concise/node'

export default defineConcise({
  posts: new URL('../posts/', import.meta.url),
  perPage: 10, // 首页每页文章数,默认 10
  hostname: 'https://example.com' // 给了才生成 feed.xml、sitemap 与 og:url
})
```

**2. 包一层站点配置** —— `docs/.vitepress/config.mts`

```ts
import concise from './concise.mjs'

export default concise.config({
  title: '…',
  themeConfig: {
    nav: [
      { text: '首页', link: '/' },
      { text: '归档', link: '/archive/' },
      { text: '标签', link: '/tags/' }
    ]
  }
})
```

`config()` 会注入文章地址 rewrite、草稿排除、sitemap、上一篇/下一篇、og 标签和构建后的 `feed.xml`;
你自己写的 `transformPageData` / `buildEnd` 照常执行。

**3. 文章列表** —— `docs/.vitepress/theme/posts.data.mts`

```ts
import concise from '../concise.mjs'

export default concise.loader
```

**4. 启用主题** —— `docs/.vitepress/theme/index.ts`

```ts
import { createConciseTheme } from 'vitepress-theme-concise'
import { data as posts } from './posts.data.mjs'

export default createConciseTheme({ posts })
```

**5. 页面**

首页 `docs/index.md`:

```md
---
layout: page
heroText: 🚀
tagline: DEV DESIGN DIY
---

<Home />
```

首页第 2 页起 `docs/page/[page]/index.md`(内容同首页)与 `docs/page/[page]/index.paths.mts`:

```ts
import concise from '../../.vitepress/concise.mjs'

export default { paths: concise.pagePaths }
```

归档 `docs/archive/index.md`、标签索引 `docs/tags/index.md`、单个标签 `docs/tags/[tag]/index.md`,
各自 `layout: page` 并放入 `<Archive />`、`<Tags />`、`<Tag />`;
标签页另需 `docs/tags/[tag]/index.paths.mts`:

```ts
import concise from '../../.vitepress/concise.mjs'

export default { paths: concise.tagPaths }
```

不需要的页面不建即可。

## 文章格式

`docs/posts/` 下每个 Markdown 就是一篇文章,地址为 `/posts/<文件名>/`(目录名即地址前缀),
日常写文章只要写正文,frontmatter 全部可选:

```md
---
title: 文章标题        # 缺省取正文第一个 # 标题
date: 2020-03-18       # 缺省取 git 首次提交时间
tags: [esp32, pcb]     # 缺省无标签
description: 一句话摘要 # 用于 og:description 与 feed 的 summary,卡片不显示
draft: true            # dev 可见,构建不收录
---
```

> 发布日期依赖 git 历史,CI 中需设置 `fetch-depth: 0`(浅克隆会退回文件修改时间)。

## 评论

评论用 [giscus](https://giscus.app),存在你 GitHub 仓库的 Discussions 里,读者用 GitHub 账号评论:

1. 博客仓库开启 Discussions,用 Announcements 类型的分类,只有你能发帖。
2. 在仓库安装 [giscus App](https://github.com/apps/giscus)。
3. 到 [giscus.app](https://giscus.app) 填仓库名,拿到 `repoId` 与 `categoryId`。

```ts
defineConcise({
  posts: …,
  giscus: {
    repo: 'user/repo',
    repoId: 'R_…',
    category: 'Announcements',
    categoryId: 'DIC_…'
  }
})
```

评论区只出现在文章页,滚到底部才加载,明暗跟随站点。

## 自定义

界面文案默认中文,在 `defineConcise` 里按需覆盖:

```ts
defineConcise({
  posts: …,
  labels: {
    publishedAt: 'Published on',
    prevPage: 'Previous',
    nextPage: 'Next',
    pagination: 'Pagination',
    archive: 'Archive',
    tags: 'Tags',
    postCount: '{n} posts',
    tagCount: '{n} tags',
    pageTitle: 'Page {n}'
  }
})
```

上一篇/下一篇与回到顶部的文案沿用 VitePress 的 `themeConfig.docFooter` 与 `returnToTopLabel`。

所有颜色与尺寸都是 CSS 变量,在自己的样式里覆盖即可:

```css
:root {
  --vp-c-brand-1: #2050ff;          /* 主题色 */
  --concise-content-width: 1200px;  /* 正文宽度 */
}
```

完整清单见 [`src/styles/vars.css`](src/styles/vars.css)。

主题也导出了各个组件,可单独取用:

```ts
import { Home, Archive, Tags, Tag, PostCard, Pagination, Layout } from 'vitepress-theme-concise'
```

## 效果

[lsun.net](https://lsun.net)

## License

[MIT](LICENSE)
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。