前言介绍
在 VuePress 中,Frontmatter 是每个 Markdown 文件顶部的 YAML 或 JSON 格式的数据块,用于配置页面的元数据和一些特定功能。以下是对 VuePress 中 Frontmatter 配置的详细总结:
1. 标题和描述
设置页面的标题和描述,有助于 SEO 和社交分享:
---
title: 页面标题
description: 这是一段页面描述
---
2. 路径和重定向
配置页面的自定义路径或设置重定向:
---
permalink: /custom-path/
redirect_from:
  - /old-path/
---
3. 导航和侧边栏
侧边栏
配置页面的侧边栏:
---
sidebar: 'heading'  # 自动生成侧边栏
sidebar: false  # 禁用侧边栏
sidebarDepth: 2  # 侧边栏标题深度
---
目录
是否在页面中显示目录:
---
toc: true  # 显示目录
---
4. 布局和组件
布局
指定页面的布局:
---
layout: LayoutName
---
组件
启用或禁用页面的某些组件:
---
navbar: false  # 禁用导航栏
footer: false  # 禁用页脚
---
5. Meta 标签
为页面添加自定义 meta 标签:
---
head:
  - - meta
    - name: keywords
      content: vuepress, docs
  - - meta
    - name: author
      content: YourName
---
6. 自定义 CSS 和 JS
在页面中添加自定义的 CSS 或 JS:
---
styles:
  - /path/to/custom.css
scripts:
  - /path/to/custom.js
---
7. 显示和状态
状态标签
为页面设置状态标签,如草稿、发布等:
---
status: draft
---
版权信息
设置页面的版权信息:
---
copyright: © 2024 YourName
---
8. 多语言支持
设置页面的语言信息:
---
lang: en-US
---
9. 自定义 Frontmatter
添加自定义的 Frontmatter 字段,以便在模板或组件中使用:
---
customField: customValue
---
综合示例
---
title: My Page Title
description: This is a detailed description of my page.
permalink: /custom-path/
redirect_from:
  - /old-path/
sidebar: 'heading'
sidebarDepth: 2
toc: true
layout: CustomLayout
navbar: false
footer: false
head:
  - - meta
    - name: keywords
      content: vuepress, docs
  - - meta
    - name: author
      content: YourName
styles:
  - /styles/custom.css
scripts:
  - /scripts/custom.js
status: draft
copyright: © 2024 YourName
lang: en-US
customField: customValue
---
上下页导航
在 VuePress 中,使用 Frontmatter 配置上一页和下一页导航,可以帮助读者更轻松地浏览文档。可以通过以下方式设置:
上一篇和下一篇导航配置
使用 Frontmatter 中的 prev 和 next 字段来指定上一页和下一页。
示例
在 Markdown 文件中设置 prev 和 next 字段:
---
title: 当前页面标题
prev: /path/to/previous-page
next: /path/to/next-page
---
例如:
---
title: 第二章
prev: /chapter-1/
next: /chapter-3/
---
这样,在页面底部会自动生成指向前一篇和后一篇的链接。
自动生成上一篇和下一篇
如果不手动配置 prev 和 next,VuePress 会自动根据目录结构生成这些导航链接。确保你的文档按照正确的顺序组织在文件夹中,并且在 .vuepress/config.js 中配置好侧边栏:
module.exports = {
  themeConfig: {
    sidebar: [
      {
        text: '章节',
        children: [
          '/chapter-1.md',
          '/chapter-2.md',
          '/chapter-3.md',
        ],
      },
    ],
  },
};
自定义组件
你也可以自定义上一页和下一页导航组件。创建一个自定义组件并在模板中使用:
<template>
  <div class="navigation-links">
    <router-link v-if="$page.frontmatter.prev" :to="$page.frontmatter.prev">上一页</router-link>
    <router-link v-if="$page.frontmatter.next" :to="$page.frontmatter.next">下一页</router-link>
  </div>
</template>
<script>
export default {
  computed: {
    prev() {
      return this.$page.frontmatter.prev;
    },
    next() {
      return this.$page.frontmatter.next;
    },
  },
};
</script>
将这个组件放在页面模板中,确保导航链接按预期显示。
总结
在 VuePress 中,Frontmatter 配置为每个页面提供了丰富的定制选项。通过配置标题、描述、路径、侧边栏、布局、组件、自定义 meta 标签、CSS 和 JS、多语言支持等,你可以灵活地控制每个页面的呈现方式和功能。这使得 VuePress 在创建结构化文档和技术文档时变得非常强大和易用。