使用 hexo-cli
创建了一个本地的 Hexo 博客实例后,Hexo 会自动生成一个目录结构:
1 2 3 4 5 6 7 8 9 10 11 . ├── _config.landscape.yml ├── _config.yml ├── db.json ├── node_modules ├── package-lock.json ├── package.json ├── public ├── scaffolds ├── source └── themes
如上所示,在这个目录结构里,博客文章源文件,主要放在 source
目录里,而生成的二进制文件,主要放在了 public
目录里。让我们看一下 public
目录的结构。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 public ├── 2024 │ └── 02 │ └── 07 │ ├── How-to-create-a-blog-with-Hexo │ │ └── index.html │ ├── HowTo-用-Hexo-建立一个博客 │ │ └── index.html │ └── hello-world │ └── index.html ├── archives │ ├── 2024 │ │ ├── 02 │ │ │ └── index.html │ │ └── index.html │ └── index.html ├── categories │ └── Guide-手册 │ └── index.html ├── css │ ├── images │ │ └── banner.jpg │ └── style.css ├── fancybox │ ├── jquery.fancybox.min.css │ └── jquery.fancybox.min.js ├── index.html ├── js │ ├── jquery-3.6.4.min.js │ └── script.js └── tags └── guide └── index.html
不难理解,这个 public
目录,就是一个网站的根目录,可以理解为一个 VirtualHost
的 DocumentRoot
。这里目录里的每个人文件的路径,其实就是最终网址后面的 path。
我们可以看到,文章的路径是按照 /年/月/日/文章名/
这样的方式组织的,为什么是这样的呢?打开主配置文件 _config.yml
,可以看到如下的配置项:
1 permalink: :year/:month/:day/:title/
上面是文章永久链接的配置项,指定了生成的页面的 path
,你也可以在文章的 FrontMatter
区段指定此篇文章的配置,如果没有指定,就会按照主配置文件的规则。通过这样的配置,我们可以使最后生成的网站的文章目录井井有条。比起最后生成的网页来说,源文件是更重要的数据,因为如果我们更换整个博客的 Theme,那么所有的文章需要重新生成,这时候更重要的是源文件。现在来看看源文件的目录布局。
1 2 3 4 5 6 7 8 9 10 11 ➜ blog git:(main) ✗ tree source source ├── _drafts │ └── 博客数据管理.md └── _posts ├── How-to-create-a-blog-with-Hexo.md ├── HowTo-用-Hexo-建立一个博客.md ├── HowTo-给博客安装一个主题.md └── hello-world.md 3 directories, 5 files
相比之下,源文件的目录的布局就比较简单,所有的已经发布的文章,都混在一个单一目录 _posts
中,现在文章数量少,看着还行,不那么凌乱,一旦文章数量变多,比如,超过 400 篇,则会变得相当难以管理。那么我们到底能不能也像 public
文件夹那样,将源文件也管理得井井有条呢?
当然可以!
Hexo 并不会在意 _posts
目录里的布局,它会递归地扫描所有的源码文件,然后按照 permalink
配置的模式去生成最后的页面,所以,最后的页面是什么网址,和你的源文件怎么组织,是没有关联的。这就使得你可以自由地安排自己的目录布局。