卡片式首页与分页,支持 /page/2/ 形式的翻页地址
vitepress-theme-concise — Vue 博客模板
作者 YoungsunLi
基于 VitePress 默认主题派生的卡片式博客主题,提供首页分页、归档、标签、Atom 订阅与可选 giscus 评论。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
按年归档页、标签索引与单个标签页,未写标签的文章不出现标签
草稿标记 draft: true,开发环境可见但构建不收录
配置 hostname 后生成 Atom 订阅 feed.xml、sitemap 与 og 标签
可选 giscus 评论,存放在 GitHub Discussions,不配置则不显示评论区
正文图片点击放大,界面文案默认中文且可覆盖,颜色与尺寸使用 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,浅克隆会退回文件修改时间。
适合你的项目吗?
适用场景
- 用 VitePress 搭建个人博客,希望首页以卡片列表展示文章
- 需要按年归档、按标签浏览文章,并希望有 Atom 订阅
- 希望文章 frontmatter 尽量少写,标题、日期、标签都有缺省规则
- 想在文章页接入基于 GitHub Discussions 的评论,且不配置时不影响站点
适合人群
- 使用 VitePress 并接受派生主题配置方式的开发者
- 以 Markdown 写作、文章放在固定目录的个人博客作者
- 需要归档、标签、订阅等博客常用页面的站点
- 希望评论可选、默认不引入第三方评论服务的项目
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
安装依赖:npm install vitepress-theme-concise
- 2
3.x 需要 Node 22+;VuePress 1.x 版本请使用 v1.0.0 分支
- 3
在 docs/.vitepress/concise.mts 中声明文章目录、每页文章数与 hostname
- 4
在 docs/.vitepress/config.mts 中用 concise.config() 包装站点配置,并在主题入口使用 createConciseTheme
- 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 原文
https://github.com/YoungsunLi/vitepress-theme-concise/blob/master/LICENSEhttps://github.com/YoungsunLi/vitepress-theme-concise/blob/master/README.md到 [giscus.app](https://giscus.app) 填仓库名,拿到 `repoId` 与 `categoryId`。
README 原文
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)
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

hexo-theme-vexo
🍟 Vexo is a Hexo theme inspired by Vue's official website.
Vue · 博客

vuepress-theme-simple
vuepress-theme-simple 是一个为 VuePress 1.x 设计的博客主题,定位非常明确:把 VuePress 默认的文档站首页改造成文章列表。
Vue · 博客

vuepress-theme-seeker
Seeker 是一款面向 VuePress 的博客主题,主打「五彩斑斓的简约」:每次刷新页面会随机生成一套配色,页脚则随机展示古诗词,这两点构成了它区别于多数静态博客主题的辨识度。
Vue · 博客

vitepress-template
🍀 Vitepress 模板,开箱即用,快速搭建你的静态网站和博客。
Vue · 博客

blog
A generated static site blog template, with Vite, Vue 3, markdown-it, and syntax highlighting.
Vue · 博客

Miracle
A miracle blog theme based on VitePress after deleting accidentally.
Vue · 博客
