2024-11-09 00:35:28 +08:00

191 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 编写文章
author: pengzhanbo
icon: mingcute:edit-4-line
createTime: 2024/03/04 10:06:06
permalink: /guide/write/
tags:
- 指南
- 快速开始
---
VuePress 支持完整的 [Markdown 语法](./markdown/基础.md),
以及使用 [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f)
定义 frontmatter 页面元数据,例如 标题和创建时间。
主题还对 Markdown 语法进行了 [扩展](./markdown/扩展.md) 支持。你还可以直接在
Markdown 中写 HTML ,或者使用 Vue 组件。
## Frontmatter
你可以通过设置 frontmatter 中的值来自定义 VuePress 里每个页面。
Frontmatter 是你的文件顶部在 `---` 中间的部分。
::: code-tabs
@tab post.md
```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 文件的顶部,通过 `---` 来分隔。
您可以阅读 [这篇文章](../../../4.教程/frontmatter.md) 了解如何正确书写 frontmatter。
:::
## 自动生成 Frontmatter
默认配置下,主题在启动开发服务后,会帮助为源目录中的 markdown 文件,生成一些 `frontmatter` 配置。
这些配置包括: __标题__, __创建时间__ 以及 __永久链接__
一方面,这可以减少 内容创作者 的一些重复工作;另一方面,这些配置也为主题后续的其他功能提供了前置支持。
```md
---
title: 标题
createTime: 2024/09/08 22:53:34
permalink: /article/9eh4d6ao/
---
```
### 标题
主题默认 使用文件名作为文章标题。在解析 文件名 时,[文件命名约定](#文件夹命名约定) 所命名的文件名如
`1.我的文章.md`,其中 `1.``.md` 部分将被裁剪,最终文章标题为 `我的文章`
### 创建时间
主题默认使用文件创建时间作为文章创建时间,并将其格式化为 `yyyy/MM/dd HH:mm:ss`
### 永久链接
__永久链接__ 指的是,文章发布后的 访问地址,这个地址一旦生成,只要您不手动修改它,即使文件路径、文件名发生改变也不会改变。
提前准备好 __永久链接__ 是比较有价值的,一方面,它可以帮助改善 站点的 SEO避免收录的地址频繁变动
另一方面,主题使用一套规范 生成 __永久链接__ ,它使得整个站点的 链接 风格一致。
- __博客文章__
对于 博客文章,默认使用 `/article/` 作为永久链接的前缀,然后使用 [`nanoid`](https://github.com/ai/nanoid)
生成长度为 `8` 的随机字符串进行拼接,作为文章的永久链接, 如 `/article/9eh4d6ao/`
对于链接前缀,还可以通过修改 [主题配置 > article](../config/主题配置.md#article) 替换默认的 `/article/`
- __notes__
对于 notes , 主题使用更为灵活的自定义方案,你可以在 [notes > note.link](../config/notes配置.md#配置) 声明不同的
note 的链接前缀,然后同样适用 [`nanoid`](https://github.com/ai/nanoid)
生成长度为 `8` 的随机字符串进行拼接,作为 ntoe 文章的永久链接。
### 禁用自动生成
你可能不想主题做额外的自动生成,希望由自己完全掌控。这完全没问题,主题支持通过配置来控制 自动生成 frontmatter 的行为。
通过 [主题配置 > autoFrontmatter](../config/主题配置.md#autofrontmatter) 即可轻松做到。
::: code-tabs
@tab .vuepress/config.ts
```ts
import { defineUserConfig } from 'vuepress'
import { plumeTheme } from 'vuepress-theme-plume'
export default defineUserConfig({
theme: plumeTheme({
// 完全禁用所有自动生成
// autoFrontmatter: false,
// 控制部分自动生成
autoFrontmatter: {
permalink: true, // 是否生成永久链接
createTime: true, // 是否生成创建时间
title: true, // 是否生成标题
}
})
})
```
:::
## 约定
::: info 提示
以下内容,以 [项目结构](./项目结构.md) 中的文件结构作为基准。
:::
使用本主题编写文章是一件很轻松的事情,你可以在 `docs`目录中按照你的个人命名喜好新建任意名字的`Markdown`文件。
### 文件夹命名约定
对于 `docs` 中的文件夹命名,主题有一套简单的约定。
- 文件夹的名称将作为 `category`__分类__
- 允许多级目录,子级目录将作为父目录对应的分类的子项。
- 如果目录名称 在 [主题配置 notes](../config/notes配置.md) 中声明用于 notes 文章管理,则默认不作为 分类目录。
由于文件夹名称将作为分类名称,且不在主题配置中进行排序配置,对于有排序需要的场景,使用以下规则进行命名:
``` ts :no-line-numbers
const dir = /\d+\.[\s\S]+/
// 即 数字 + . + 分类名称
// 如: 1.前端
```
数字将作为 __排序__ 的依据。 如果不带数字,则以默认的规则进行排序。
__example:__
::: file-tree
- docs
- 1.前端
- 1.html/
- 2.css/
- 3.javascript/
- 2.后端/
- 运维/
:::
主题将根据 目录结构,生成一个 分类页。
### 文件命名约定
- __博客文章__
对于 __博客文章__ 的名称,主题没有任何约定,你可以任意命名。博客文章默认排序规则仅根据文件创建时间进行排序。
你还可以通过 [frontmatter > sticky](../config/frontmatter/post.md#sticky) 配置文章是否置顶。
- __notes__
对于 __notes__ 中的 markdown 文件名称,依然遵循 与 [文件夹命名约定](#文件夹命名约定) 相同的规则。
这可以为 notes 的 [自动生成侧边栏](../config/notes配置.md#自动生成侧边栏) 提供排序依据。
## 文章写作
你可以使用 `markdown` 语法开始在 `docs` 下新建 `Markdown` 文件,编写你自己的文章了,
关于 markdown 扩展的功能支持,请查看 [这个文档](./markdown/扩展.md)
由于主题默认会为文章 的 `frontmatter` 自动生成一个 `title`,因此,文章内容的主体部分的标题,起始应该从 `h2` 即
`## 二级标题` 开始。如果您禁用了 `autoFrontmatter.title`,那么应该使用 `h1` 即 `# 一级标题` 开始。
### 标签
通过 `frontmatter.tags` 可以为文章添加标签。
```md
---
title: 我的文章
tags:
- 标签 1
- 标签 2
---
```