hexo 介绍
hexo 是一个使用 markdown 解析生成静态网页的框架,这样的框架还有 jekyll,前者基于 nodejs,后者基于 Ruby。但都使用 .yml
作为配置文件。之前用过 jekyll 搭建静态博客,但是在入门难易程度,包管理器生态环境和速度方面,貌似 hexo 更好一些。
hexo 默认使用 ejs 作为解析模板,默认 markdown 解析也与 GitHub 最为相似。书写,本地预览和部署到 GitHub repo 都非常方便。
准备工作
安装 Git-Bash
- Win - download
- Linux -
sudo apt-get install git
在 Linux 上配置 Git 参考这里.
安装 Node
查看 nodejs 和 npm 版本1
2node -v
npm -v
安装 hexo
1 | cd my-hexo-blog |
由于网络环境的原因,现在 npm 安装也非常慢,可以使用淘宝的 npm 镜像 - cnpm 来更快地安装包。参考这里.
1 | npm install -g cnpm --registry=https://registry.npm.taobao.org |
测试运行 hexo
设置 hexo 运行脚本
本人不太喜欢全局安装 npm 包,所以想要使用局部安装的 hexo,需要运行 ./node_modules/.bin/hexo
,但是这样很麻烦,可以在项目根目录中写相应的脚本来更好的使用 hexo 命令。
BAT
在项目根目录下创建 hexo.bat
文件,内容如下:
1 | @ECHO off |
BASH
在项目根目录下创建 hexo
文件,内容如下:
1 | "node/node" "./node_modules/.bin/hexo" "$@" |
这样就可以在项目根目录下使用局部 hexo 命令了。
初始化项目
1 | hexo init |
初始化完成后,会形成下面的 hexo 项目结构:
1 | ./ |
生成静态页面
其中 public 目录存放 hexo 生成的静态页面。运行
1 | hexo generate |
会创建 public 目录并生成所有静态页面。
为了在本地预览,hexo 还提供了一个本地 web 服务器环境。运行
1 | hexo server |
运行成功后,通过访问 localhost:4000 即可预览。
使用 fexo 主题
安装 fexo 主题
1 | cd my-hexo-blog/themes/ |
修改配置文件
修改博客根目录下的 _config.yml
中的 theme
为 fexo
.
配置 themes/fexo/_config.yml
参考这里.
安装插件
1 | # rss 支持 |
在 fexo 中自定义样式
fexo 的自定义样式由其配置文件 fexo/_config.yml
中的 personal_style:
设置。对应值的路径相对与 my-hexo-blog/source/
,如设置 personal_style: /css/custom.css
,则应该创建 my-hexo-blog/source/css/custom.css
文件,并在其中设置样式。
其他不错的主题
第三方服务
使用百度统计
在百度统计申请账号,拿到自己的 token,并将其填入 fexo/_config.yml
中的 baidu_analytics:
属性值。
使用 Disqus 评论
在DISQUS注册,并申请自己的二级域名。在个人账户页面,Setting -> Add Disqus To Site -> GET STARTED
,然后填写相应信息。将自己申请的 Disqus 二级域名填如 fexo/_config.yml
中的 disqus_shortname:
属性值。
也可以使用多说评论,修改 duoshuo_shortname:
并注释 Disqus 即可。
使用 GitHub Pages 部署网站
GitHub 提供免费的 300M 网站空间,使得开发者可以静态展示自己的项目或网站。要使用 GitHub Pages 功能,首先申请 GitHub 账号,然后创建一个公开项目 [yourname].github.io
。
修改 my-hexo-blog/_config.yml
中的 deploy
属性;
1 | deploy: |
设置好后,在根目录运行
1 | hexo deploy |
如果没有配置 ssh-key,需要输入 GitHub 的账号密码。
若不想使用 hexo deploy
命令,还可以自己 push public/
中的静态页面到 [yourname].github.io.git
代码仓库。可以先 clone 仓库到本地,然后拷贝其中的 .git
文件夹到 my-hexo-blog/public/
中,再使用 git
同步到远端库。
1 | git add -A |
性能优化
gulp 压缩
安装 gulp 相关依赖包
1 | npm install gulp --save |
编写 gulpfile.js 文件
1 | var gulp = require('gulp'); |
新建 gulp.bat
1 | @ECHO off |
压缩 public/
下的静态页面
1 | gulp <task> |
p.s. 之前一直用 Grunt 做压缩,花了较长时间学习,积累经验,但是感觉理解还是不够,这次折腾发现 gulp 更容易上手和使用,gulpfile.js
可读性很高,简直相见恨晚。
CDN 优化
GitHub 提供的 web 服务是很好的,但是国内的网络环境使得访问 GitHub Pages 的速度惨不忍睹,提高访问速度的方法无外乎压缩源码、使用 CDN 等手段。上节试了压缩源码,但是性能提升十分有限。如果能把所需的所有 js/css/image 等文件以 CDN 方法部署,就能大大提高访问速度。hexo 目前还没有集成的方案,这方面还需要学习和研究,使用 CDN 优化网站访问速度。
SEO 优化
GitHub Pages 在 SEO 方面先天不足,由于百度不对其做索引,导致网站流量仅能通过有限的渠道被访问,也导致搭在 GitHub 上的博客大都无人问津。应该从两方面来提高网站流量,最主要的是提高内容质量,再一方面做好 SEO 优化。hexo 可以就有 seo 插件,生成 sitemap。
1 | npm install hexo-generator-sitemap --save |