Hexo 是一个简单地、轻量地、基于Node的一个静态博客框架,可以方便的生成静态网页托管在github和Heroku上
Hexo 的安装
由于Hexo是基于Node,所以需要先安装Node。(对于ubuntu 12.04版本来说,安装node比较麻烦,这里不表,具体百度)
1 | npm install -g hexo |
hexo 的帮助文档 (hexo help)
1 | Usage: hexo <command> |
使用hexo init hexo-demo初始化
初始化完成之后使用hexo server
进行调试,通过4000端口可以看到效果
hexo 目录结构
1 | ├── _config.yml |
- scaffolds :模板文件夹,新建文章时,Hexo 会根据 scaffold 来建立文件。Hexo 有三种默认布局: post 、 page 和 draft ,它们分别对应不同的路径。新建文件的默认布局是 post ,可以在配置文件中更改布局。用 draft 布局生成的文件会被保存到 source/_drafts 文件夹。
- source :资源文件夹是存放用户资源的地方。
- source/_post :文件箱。(低版本的hexo还会存在一个 _draft ,这是草稿箱)除 _posts 文件夹之外,开头命名为 _ (下划线)的文件/ 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去
- themes :主题 文件夹。Hexo 会根据主题来生成静态页面。
- themes/landscape :默认的皮肤文件夹
- _config.yml :全局的配置文件,每次更改要重启服务。
全局配置
可以在_config.yml
中修改:
1 | # Hexo Configuration |
主题下一般有一个languages
文件夹,用于对应language
配置项。比如在ejs
中有:
1 | <%= __('tags') %> |
language 的配置项是zh-CN
,则会在 languages 文件夹下找到zh-CN.yml
文件中对应的项来解释。
修改全局配置时,注意缩进,同时注意冒号后面要有一个空格。
主题配置
主题的配置文件在/themes/主题文件夹/_config.yml
,一般包括导航配置(menu),内容配置(content),评论插件,图片效果(fancybox)和边栏(sidebar)。
Hexo提高了大量的主题,可以在全局配置文件中更改主题:
1 | # Extensions 扩展 |
主题的文件目录必须在themes目录下。
基本使用
写文章通过 new 命令新建一篇文章:
1 | $ hexo new [layout] <title> //等价于 hexo n |
发表的文章会全部显示,如果文章很长,就只要显示文章的摘要就行了。在需要显示摘要的地方添加如下代码即可:
1 | 以上是摘要 |
刷新,就能够看到只显示摘要了,同时会提供<Read More>
的链接, 这个文字可以更改,在主题的配置文件themes/主题文件夹/_config.yml
中,找到 Content :
1 | # Content |
在部署之前,需要通过命令把所有的文章都做静态化处理,就是生成对应的html,javascript,css使得所有的文章都是由静态文件组成的:
1 | hexo generate //等价于hexo g |
在本地目录下,会生成一个public的目录,里面包括了所有静态化的文件。
Hexo常用命令:
1 | hexo n == hexo new |
hexo 主意事项
- 编写文章是在source目录下的文件最好不要使用中文,使用中文可能对
<!--more-->
有影响,导致不能正确显示全文 - hexo生成html静态页面时,如果有使用html的table标签只能将所有的写在一行不能换行,否则hexo会自动添加空格
- 使用多说插件时,由于获取用户头像时使用的不是https协议,导致全站https失败,需要对第三方头像进行代理搞定了代理服务器,接下来就是把评论框中的HTTP链接替换成我们的代理链接。embed.js是博客中唯一引用的多说文件,上面提到的非 HTTPS 资源都是由它插入到 DOM 树中的。
1
2
3
4
5
6
7
8location ~ "^/proxy/(.*)$" {
resolver 8.8.8.8;
proxy_pass http://$1;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
expires 7d;
}
首先从多说服务器下载embed.js到网站目录,然后进行编辑。先找头像地址变量avatar_url:在return前面插入:1
return e.avatar_url || nt.data.default_avatar_url
然后是表情链接,它存放在多说 API 接口中的message字段,所以需要对整个message进行替换。找到 713 行中的s.message,把它替换为:1
2
3
4
5
6if (e.avatar_url) {
e.avatar_url = (document.location.protocol == "https:") ? e.avatar_url.replace(/^http:\/\//, "https://yourwebsite.com/proxy/") : e.avatar_url
} else {
nt.data.default_avatar_url = (document.location.protocol == "https:") ? nt.data.default_avatar_url.replace(/^http:\/\//, "https://yourwebsite.com/proxy/") : nt.data.default_avatar_url
}
return e.avatar_url || nt.data.default_avatar_url最后把多说评论框中ds.src路径改为你的本地路径,就大功告成了。1
((s.message.indexOf("src="http:\/\/") == -1) ? s.message : ((document.location.protocol == "https:") ? s.message.replace(/src="http:\/\//, "src="https://hack0nair.me/proxy/") : s.message))