要解释index.md与_index.md的区别,需要先弄清楚一个叫Page Bundle的名词。按Hugo官方的解释,Page Bundle就是一个“页面包裹”,把一个页面的内容和相关资源打包在一起,通俗的理解就是用一个目录来管理文章和图片等资源,把一篇文章和文章中的配图一起放在某个目录下,这个目录就是一个Page Bundle。

Page Bundle又分成了两大类,类比一棵树,一种叫叶子Page Budle,另外一种叫分支或树干Page Bundle。那怎么来区分一个Page Bundle到底是树叶,还是树干呢?

一颗银杏树

这个时候就轮到index.md和_index.md出场了,如果一个目录下包含_index.md文件的就是树干,反之只包含了index.md的目录就是树叶。

content/
├── leaf/
│   ├── index.md # 表明leaf目录是leaf bundle
│   └── leaf.jpg
└── branch/
    ├── _index.md # 表明branch目录是branch bundle
    └── branch.jpg

我们都知道树叶是一颗树的最末端,即树叶上不可能再长树干了,同理,包含index.md的目录也不能包含子目录了;而树干是可以继续长出树干和叶子的,所以类比到包含_index.md的目录,它是可以继续嵌套其它目录和子目录的。

Hugo页面有个方法叫 .Resources,这个方法可以提取出页面相关的所有资源,包括图片、音视频等,它提取的资源就是从对应的Page Bundle中提取出来的。

以上就是index.md和_index.md的主要区别与作用。