Hexo 文章建议不要使用 Markdown 一级标题,而是从二级标题开始

逻辑是这样的。首先,按照 MDN 的规范,一个 HTML 网页,建议最多只有一个<h1>标签,作为页面主要标题。虽然在技术上是可以在 HTML 文件里面写多个<h1>标签的,但是多个<h1>会降低标题的语义价值,破坏文档结构。SEO 也是不推荐使用多个<h1>标签。

在 Markdown 也是同理。使用一个一级标题#作为主标题,不建议在一个 md 文件中使用多个一级标题。Markdown 渲染为 HTML 的时候,标题的层级一般就是对应的。一级标题对应<h1>,二级标题对应<h2>,以此类推。

在 Hexo,是一个 Markdown 文件作为一篇文章,而文章的标题,是在 Front-matter 中进行配置,title就是标题。这样的话,Markdown 的一级标题相应的语义功能就用不到了,也就不应该再使用了。需要使用 Markdown 标题的时候,也是从二级标题开始。

实际上,Hexo 本身的推荐也是不在文章使用 Markdown 一级标题,而是从二级标题开始。在hexo init之后,可以看到他的示例文章hello-world.md,里面就是从二级标题开始使用的,没有用一级标题。

1
2
3
4
5
6
7
8
---
title: Hello World
---
Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).

## Quick Start

### Create a new post

这里只展示前面的部分。

实际上,Hexo 大多数主题,就是把 Front-matter 中的title渲染为<h1>,然后 Markdown 中的标题渲染为 HTML 对应的标题层级。

这里说的是大多数主题。像是 NexT 主题,目前则是把 Markdown 文章中的标题降一级渲染处理。也就是说,Markdown 的一级标题会渲染为<h2>,后面的也都是都降一级处理。原先的 NexT 应该没有这样处理的,好像是后来修改成这样的。在 NexT 的 GitHub 有相关的 discussion。搜索的关键词如下。

hexo 多个 h1 tag

个人感觉,NexT 这种修改不是很合适。不过主要还是 Hexo 的锅。本身在 Markdown 使用多个一级标题就不是好的习惯。Hexo 要做的应该是在文档中,明确给出具体的建议。因为既然在 Front-matter 中定义了标题的值了,那么在 Markdown 中就不需要也不应该使用一级标题了,而是从二级标题开始使用。仅仅是从示例文档来体现的话,效果并不是很明显。


Hexo 文章建议不要使用 Markdown 一级标题,而是从二级标题开始
https://sunboyallen.github.io/hexo-heading/
作者
sunboyallen
发布于
2024年6月23日
许可协议