Hexo语法

写作·

新建一篇文章·

你可以执行下列命令来创建一篇新文章或者新的页面:

hexo new [layout] [title]

您可以在命令中指定文章的布局(layout),默认为 post,可以通过修改 _config.yml 中的 default_layout 参数来指定默认布>局。

文件名称·

Hexo 默认以标题做为文件名称,但您也可以在_config.yml中编辑 new_post_name 参数来改变默认的文件名称,举例来说,设为 :year-:month-:day-:title.md 可让您更方便的通过日期来管理文章。

模版(Scaffold)·

在新建文章时,Hexo 会根据 scaffolds 文件夹内相对应的文件来建立文件,例如:

hexo new yun "My first article"

在执行这行指令时,Hexo 会尝试在 scaffolds 文件夹中寻找 yun.md 文件,并根据其内容建立文章


Front-matter(前页)·


此处有个注意事项:github库 图片引用中,把地址中的blob改成raw,否则可能不能使用。

分类和标签·

只有文章支持分类和标签,您可以在 Front-matter 中设置。在其他系统中,分类和标签听起来很接近,但是在 Hexo 中两者有着明显的差别:分类具有顺序性和层次性,也就是说 Foo, Bar 不等于 Bar, Foo;而标签没有顺序和层次。例如:

categories:
- Diary
tags:
- PS3
- Games

如果你需要为文章添加多个分类,可以尝试以下 list 中的方法。

categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]
此时这篇文章同时包括三个分类: PlayStation 和 Games 分别都是父分类 Diary 的子分类,同时 Life 是一个没有子分类的分类。

JSON Front-matter

除了 YAML 外,你也可以使用 JSON 来编写 Front-matter,只要将 --- 代换成 ;;; 即可。

;;;

“title”: “Hello World”,
“date”: “2013/7/13 20:46:25”
;;;


标签插件(Tag Plugins)·

标签插件和 Front-matter 中的标签不同,它们是用于在文章中快速插入特定内容的插件。

引用块·

在文章中插入引言,可包含作者、来源和标题。

1
2
3
{% blockquote author, - source [link] [source_link_title] %}
content
{% endblockquote %}

效果如下:

content

author- source link source_link_title

样例·

没有提供参数,则只输出普通的 blockquote

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.

引用书上的句子

Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.

David Levithan- Wide Awake

引用 Twitter

NEW: DevDocs now comes with syntax highlighting. http://devdocs.io

引用网络上的文章

Every interaction is both precious and an opportunity to delight.

代码块·

在文章中插入代码。

1
2
3
{% codeblock [title] [lang:language] [url] [link text] %}  
code snippet
{% endcodeblock %}

效果如下:

code snippet

样例·

普通的代码块

alert('Hello World!');
1
2
3
{% codeblock %}
alert('Hello World!');
{% endcodeblock %}

指定语言

[rectangle setX: 10 y: 10 width: 20 height: 20];
1
2
3
{% codeblock lang:objc %}
[rectangle setX: 10 y: 10 width: 20 height: 20];
{% endcodeblock %}

附加说明

Array.map
array.map(callback[, thisArg])
1
2
3
{% codeblock Array.map %}
array.map(callback[, thisArg])
{% endcodeblock %}

附加说明和网址

_.compactUnderscore.js
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]
1
2
3
4
{% codeblock _.compact http://underscorejs.org/#compact  Underscore.js %}
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]
{% endcodeblock %}

hexo官方文档的展示:

Pull Quote·

在文章中插入 Pull quote。

1
2
3
{% pullquote [class] %}
content
{% endpullquote %}

jsFiddle·

在文章中嵌入 jsFiddle。

1
{% jsfiddle shorttag [tabs] [skin] [width] [height] %}

Gist·

在文章中嵌入 Gist。

1
{% gist gist_id [filename] %}

iframe·

在文章中插入 iframe。

1
{% iframe url [width] [height] %}

Image·

在文章中插入指定大小的图片。

1
{% img [class names] /path/to/image [width] [height] '"title text" "alt text"' %}

在文章中插入链接,并自动给外部链接添加 target=“_blank” 属性。(这个链接是在本网页进行跳转)

菜鸟教程
1
{% link 菜鸟教程 https://www.runoob.com/ 学的不仅是技术,更是梦想! %} 

插入视频·

插入代码文件·

插入 source/downloads/code 文件夹内的代码文件。source/downloads/code 不是固定的,取决于你在配置文件中 code_dir 的配置。

{% include_code [title] [lang:language] [from:line] [to:line] path/to/file %}
Helloview raw
print("Hello World!")
1
{% include_code Hello.p lang:python hello.py %}

引用资源 和 Raw·

引用博客文章·

这里的引用文章,是指引用你博客下的文章,把链接指向你的另一篇文章。
基本使用方法:

1
2
{% post_link 这里填写你的另一篇文章名称 %}
{% post_link 这里填写你的另一篇文章名称 '这里是自定义链接的名称' %}
markdwon笔记
1
{% post_link Markdown语法 markdwon笔记 %}

文章摘要和截断·


资源文件夹·

资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。

直接引用·

如果 Hexo 项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中,然后通过以下方法引用:

1
![NP15](/images/NP15.jpg)

文章资源文件夹·

对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组织化的方式来管理资源。这个稍微有些复杂但是管理资源非常方便的功能可以通过将 config.yml 文件中的 post_asset_folder 选项设为 true 来打开。
当资源文件管理功能打开后,Hexo将会在你每一次通过 hexo new layout title 命令创建新文章时自动创建一个文件夹。这个资源文件夹将会有与这个文章文件一样的名字。将所有与你的文章有关的资源放在这个关联文件夹中之后,你可以通过相对路径来引用它们,这样你就得到了一个更简单而且方便得多的工作流。

引用的代码·

在不使用插件的情况下进行引用(开启了“post_asset_folder”文章资源文件夹)

1
2
3
![patch 3](./NP15.jpg)

{% asset_img "patch 2.jpg" %}

这里要注意,(./NP15.jpg)这种格式不能使用空格,空格会导致无法识别,图片无法加载。例如:(./patch 2.jpg)这是错误的。

在使用hexo-asset-image参考链接1参考链接2插件的情况下进行引用(开启了“post_asset_folder”文章资源文件夹)

1
![NP15](2020-02-16-试验组-1/NP15.jpg)

这里同样要注意,(2020-02-16-试验组-1/NP15.jpg)这种格式也不能使用空格,空格会导致无法识别,图片无法加载。例如:(2020-02-16-试验组-1/patch 2.jpg)这是错误的。

总结:既然加了插件也就增加了一种引用的方法,那还不如少加个插件,只用剩下的两种。当然,还可以使用外链,那就另算了。

使用相对路径进行引用·

数据文件夹·

hexo server·

使用服务器·

  • Hexo 3.0 把服务器独立成了个别模块,您必须先安装 hexo-server 才能使用。在命令提示符(cmd)中输入:

    1
    npm install hexo-server --save
  • 安装完成后,输入以下命令以启动服务器,您的网站会在 http://localhost:4000 下启动。在服务器启动期间,Hexo 会监视文件变动并自动更新,您无须重启服务器。

    hexo server

    简写:

    hexo s

  • 如果您想要更改端口,或是在执行时遇到了 EADDRINUSE 错误,可以在执行时使用 -p 选项指定其他端口,如下:

    hexo server -p 5000

静态模式·

在静态模式下,服务器只处理 public 文件夹内的文件,而不会处理文件变动,在执行时,您应该先自行执行 hexo generate,此模式通常用于生产环境(production mode)下。

自定义 IP·

  • 服务器默认运行在 0.0.0.0,您可以覆盖默认的 IP 设置,如下:
    hexo server -i 192.168.1.1
  • 指定这个参数后,您就只能通过该IP才能访问站点。例如,对于一台使用无线网络的笔记本电脑,除了指向本机的127.0.0.1外,通常还有一个192.168.*.*的局域网IP,如果像上面那样使用-i参数,就不能用127.0.0.1来访问站点了。对于有公网IP的主机,如果您指定一个局域网IP作为-i参数的值,那么就无法通过公网来访问站点。

Pow·

Pow 是一个Mac系统上的零配置 Rack 服务器,它也可以作为一个简单易用的静态文件服务器来使用。

安装·

1
curl get.pow.cx | sh

设置·

  • 在 ~/.pow 文件夹建立链接(symlink)。

    1
    2
    cd ~/.pow
    ln -s /path/to/myapp
  • 您的网站将会在 http://myapp.dev 下运行,网址根据链接名称而定。

hexo generate·

使用 Hexo 生成静态文件快速而且简单。

hexo generate

监视文件变动·

Hexo 能够监视文件变动并立即重新生成静态文件,在生成时会比对文件的 SHA1 checksum,只有变动的文件才会写入。

hexo generate --watch

完成后部署·

您可执行下列的其中一个命令,让 Hexo 在生成完毕后自动部署网站,两个命令的作用是相同的。

1
2
hexo generate --deploy
hexo deploy --generate

简写·

上面两个命令可以简写为

1
2
hexo g -d
hexo d -g

hexo 功能扩展(插件)·

文章标题锚点·

隶属于hexo-renderer-markdown-it插件下的anchors配置栏

Github hexo-renderer-markdown-it 的配置 深究 Markdown 的锚点与使用方法

效果:在标题的左边或右边出现链接至该标题的永久链接

使用:

  • 直接点击即可复制链接

  • 通过[名称](#标题名) 跳转到该标题处