--- title: 编写文章 icon: mingcute:edit-4-line createTime: 2024/03/04 10:06:06 permalink: /guide/write/ tags: - 指南 - 快速开始 --- VuePress 完整支持 [标准 Markdown 语法](../markdown/basic.md),同时允许通过 [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) 格式的 Frontmatter 定义页面元数据(如标题、创建时间等)。 此外,主题还提供了丰富的 [Markdown 扩展语法](../markdown/extensions.md),您不仅可以在 Markdown 中直接编写 HTML,还能使用 Vue 组件来增强内容表现力。 ## Frontmatter 页面配置 通过 Frontmatter 可以自定义每个页面的属性和行为。Frontmatter 位于文件顶部,由 `---` 分隔符包裹。 ```md title="post.md" --- title: 文章标题 createTime: 2024/09/08 22:53:34 permalink: /article/9eh4d6ao/ --- 页面正文内容位于第二个 `---` 之后。 ``` ::: details 什么是 Frontmatter? Frontmatter 是采用 [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) 格式的配置区块,位于 Markdown 文件顶部,通过 `---` 分隔符界定。 推荐阅读 [Frontmatter 详解](../../../../4.教程/frontmatter.md) 了解完整语法规范。 ::: ## 自动生成 Frontmatter 主题在开发服务器启动后,会自动为文档源目录中的 Markdown 文件生成必要的 Frontmatter 字段,包括:**标题**、**创建时间** 和 **永久链接**。 这一功能既减轻了内容创作者的重复工作负担,也为主题的后续功能提供了必要的数据支持。 ```md --- title: 标题 createTime: 2024/09/08 22:53:34 permalink: /article/9eh4d6ao/ --- ``` ### 标题生成规则 主题默认使用文件名作为文章标题。解析时会自动移除[文件命名约定](#文件夹命名约定)中的序号和扩展名,例如 `1.我的文章.md` 将生成标题 `我的文章`。 ### 创建时间 主题以文件的创建时间为基准,格式化为 `yyyy/MM/dd HH:mm:ss` 作为文章创建时间。 ### 永久链接 **永久链接**是文章发布后的固定访问地址。一旦生成,即使文件路径或名称发生变化,该链接仍保持不变。 预先设置永久链接有助于: - 提升 **SEO 效果**,避免收录地址频繁变动 - 保持整个站点链接风格的 **一致性** ### 禁用自动生成 如需完全手动控制 Frontmatter,可通过 [主题配置 > autoFrontmatter](../../config/theme.md#autofrontmatter) 禁用自动生成功能。 ```ts title=".vuepress/config.ts" twoslash import { defineUserConfig } from 'vuepress' import { plumeTheme } from 'vuepress-theme-plume' export default defineUserConfig({ theme: plumeTheme({ // 完全禁用所有自动生成 // autoFrontmatter: false, // 按需启用特定功能 autoFrontmatter: { permalink: true, // 生成永久链接 createTime: true, // 生成创建时间 title: true, // 生成标题 }, collections: [{ type: 'post', dir: 'blog', title: '博客', // 针对特定 collection 配置 autoFrontmatter: { permalink: true, createTime: true, title: true } }] }) }) ``` ## 文件组织约定 ::: info 说明 以下示例基于[项目结构](./project-structure.md)中的基准文件结构。 ::: 主题提供了灵活的文件组织方式,您可以在 `docs` 目录中按喜好创建任意命名的 Markdown 文件。 ### 文件夹命名约定 主题对 `docs` 目录中的文件夹命名采用以下规则: 对于 `post` 类型的 collection: - 文件夹名称作为文章的 **分类** - 支持多级目录,子目录作为父分类的子项 需要排序时,采用以下命名模式(适用于所有类型的 collection): ```ts :no-line-numbers const dir = /\d+\.[\s\S]+/ // 格式:数字 + . + 分类名称 // 示例:1.前端 ``` 数字部分将作为 **排序依据**。未带数字的目录按默认规则排序。 **示例结构:** ::: file-tree - docs - blog # post 类型 collection - 1.前端 - 1.html/ - 2.css/ - 3.javascript/ - 2.后端/ - 运维/ - typescript # doc 类型 collection - 1.基础 - 1.变量.md - 2.类型.md - 2.进阶.md ::: 主题将根据目录结构自动生成分类页面或者侧边栏。 ### 文件命名约定 文件命名遵循与[文件夹命名约定](#文件夹命名约定)相同的规则,为笔记功能的[自动生成侧边栏](../../config/notes.md#自动生成侧边栏)提供排序依据。 ## 开始写作 现在您可以在 `docs` 目录下创建 Markdown 文件开始写作了。关于 Markdown 扩展功能的完整说明,请参阅[扩展语法文档](../markdown/extensions.md)。 由于主题默认自动生成文章标题,正文内容的标题应从二级标题 `## 二级标题` 开始。如果禁用了 `autoFrontmatter.title`,则使用一级标题 `# 一级标题` 开始。 ### 文章标签 通过 `frontmatter.tags` 为文章添加标签: ```md --- title: 我的文章 tags: - 标签1 - 标签2 --- ```