具体怎么通过 Hexo 搭建个人博客,已经有很多很好的博文了。此文专注记录用 Hexo 写博文过程中遇到的问题和 tips。
Hexo 初解
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
Markdown: 轻量级标记语言, 是方便作者写博文,仅仅是内容。Markdown 渲染引擎让它如静态网页一样呈现。(原材料)Theme: 为了更好的互动,让博文更绚丽,有调理的呈现。(染料)Hexo:让 Markown 穿上 Theme 的衣服(渲染引擎),更好组织和交互。(作坊,生产线)
Hexo 整套思路是借鉴 Jekyll,只是用 NodeJS 又实现了一次,个人感觉易用性更好了,性能也比 Ruby 实现的要好。
布局(Layout)
刚接触 Hexo 的时候很让我感觉迷惑的两个 layout。一个是 scaffolds 中的 draft、page and post 的 md 文档,该博文中命名为Scaffolds Layout(是生成不同文档的脚手架模板)。Theme 中的 layout,才是真正的我们理解的 layout。该博文中命名为Theme Layout。
Scaffolds Layout: scaffolds 中的 draft、page and post 的 md 文档Theme Layout: Theme 中的 layout, swig or ejs 文件
Scaffolds Layout
1 | hexo new [layout] <title> |
如上命令中的 layout,是指
Scaffolds Layout。 预定义了post、page和draftmarkdown 文件做为脚手架模板,为了快速生成文档,如下是默认生成路径。如果在 scaffolds 增加自己的Scaffolds Layout,会生成文件到source/_posts文件夹。Scaffolds Layout Path postsource/_postspagesourcedraftsource/_drafts如上默认
Scaffolds Layout分别代表三种类别,这是 Hexo 程序逻辑控制的。post: 博文page: 单独 HTML 页面, 如 Menu 菜单中的 tags, categories, about …draft: 临时博文
脚手架文档模板中Scaffolds Layout设置了什么?
1
2
3
4
5
6---
title: {{ title }}
date: {{ date }}
tags:
categories:
---其实缺少了 layout 的设置,默认是 post,可以通过修改 _config.yml 中的 default_layout 参数来指定默认布局。这才是
Theme Layout。这是两者的关系。
Theme Layout
- themes 文件中,对应 theme 的 layout 文件夹下面的文件。
- 可以通过修改 Site _config.yml 中的 default_layout 参数来指定默认
Theme Layout。 - 如果改变页面样子,应该在这里修改。
- 为了更好的重用,他们会 extends 或者嵌套另一个 layout,看看 page 和 tag layout 关系就知道了。
- 为了足够动态控制,一定了标签和变量。
Categories and Tags
Mapping Categories and Tags with Hexo
在 Hexo 默认配置文件中_config.yml, 有两个配置项 category_map 和 tag_map,主要是影响点击后的 url 路径。如何增加 Categories 和 Tags 页面,解决 404 error
1
2
3
4
5
6
7$ hexo new page tags
$ hexo new page categories
# 会生成 source/tags/index.md
# 会生成 source/categories/index.md
# 然后分别增加如下行,如果你是用Theme Next,其他可能加入对一个的layout
# add line: type: "tags"
# add line: type: "categories"
Theme
Markdown
表格(Table)不能正常展示
发现 Hexo 默认采用插件 hexo-renderer-marked 做为 markdown 的渲染。我在表格前加个空格就不能正常渲染,去掉就可以了。Markdown 代码块语言 Language names and aliases
Website Visiting Analyzes
网站访问统计: