hexo系列教程
hexo系列教程来源: http://zipperary.com/2013/05/28/hexo-guide-1/
hexo系列教程:(一)hexo介绍

什么是hexo
hexo是一个基于Node.js的静态博客程序,可以方便的生成静态网页托管在github和Heroku上。作者是来自台湾的@tommy351。引用@tommy351的话,hexo:
快速、简单且功能强大的 Node.js 博客框架。
A fast, simple & powerful blog framework, powered by Node.js.
类似于jekyll、Octopress、Wordpress,我们可以用hexo创建自己的博客,托管到github或Heroku上,绑定自己的域名,用markdown写文章。本博客即使用hexo创建并托管在github上。
为什么要用hexo
还是引用下作者的话:
不可思议的快速 ─ 只要一眨眼静态文件即生成完成
支持 Markdown
仅需一道指令即可部署到 GitHub Pages 和 Heroku
已移植 Octopress 插件
高扩展性、自订性
兼容于 Windows, Mac & Linux
我再加几条:
- 易用。不仅部署简单,平时使用中仅需要
hexo newhexo generatehexo serverhexo deploy四个命令。不像Jekyll需要很多繁琐的git命令。 - 轻。文件少、小,易理解,方便自定义。
- 用户多。虽然赶不上Jekyll和Octopress,但遇到什么问题都能搜索到答案,或者找到同样使用hexo的用户进行参考和咨询。
谁能使用hexo
这是一个免费开源的博客程序,任何人都可以使用和修改。但是不同于wordpress,hexo由于需要使用Github,Git,Markdown,Node.js这样的工具,好多插件、widget都需要自己安装、设置。所以适合那些有一定计算机基础,喜欢折腾的人。但是,不要恐惧,只要跟着本教程走,就能很方便地让自己的博客”飞起来”。
怎样搭建hexo博客
正题来了,请期待下一节。
注意
本系列相关博客均根据hexo1.1.3版本,但更高版本也几乎完全适用。各版本所做更新修正,请参考这里。
hexo系列教程:(二)搭建hexo博客
上一节对hexo进行了简单介绍,本节来讲讲怎么搭建hexo博客。
注意:本节教程只针对Windows用户,Linux和Mac用户请移步hexo安装。
安装Git
下载 msysgit 并执行即可完成安装。
安装Node.js
在 Windows 环境下安装 Node.js 非常简单,仅须下载安装文件并执行即可完成安装。
安装hexo
利用 npm 命令即可安装。(在任意位置点击鼠标右键,选择Git bash)
1 |
npm install -g hexo |
创建hexo文件夹
安装完成后,在你喜爱的文件夹下(如H:\hexo),执行以下指令(在H:\hexo内点击鼠标右键,选择Git bash),Hexo 即会自动在目标文件夹建立网站所需要的所有文件。
1 |
hexo init |
安装依赖包
1 |
npm install |
本地查看
现在我们已经搭建起本地的hexo博客了,执行以下命令(在H:\hexo),然后到浏览器输入localhost:4000看看。
1 |
hexo generate |
好了,至此,本地博客已经搭建起来了,只是本地哦,别人看不到的。下面,我们要部署到Github。
注册Github账号
已有账号可以跳过,没有的,请在此进行注册,很简单,这里就不介绍了。
创建repository
在自己Github主页右下角,创建一个新的repository。比如我的Github账号是zippera,那么我应该创建的repository名字应该是zippera.github.io。

部署
编辑_config.yml(在H:\hexo下)。你在部署时,要把下面的zippera都换成你的账号名。
1 |
deploy: |
据说最新版本的hexo 中,这里的 type 要写成 git,而不是 github。
执行下列指令即可完成部署。
1 |
hexo generate |
注意:有些新用户需要设置 ssh,否则上述命令会失败。ssh 的介绍和设置方法请看官方教程,不用担心,很简单。
记住:每次修改本地文件后,需要hexo generate才能保存。每次使用命令时,都要在H:\hexo目录下。
Okay,我们的博客已经完全搭建起来了,在浏览器访问zippera.github.io就能看到你的成就了!
bugs
- 有网友反应右键菜单中没有
git bash选项,可以进入开始菜单找到git bash,然后通过cd进入相应目录执行命令。 - 在github部署完成之后,马上访问可能出现404错误,这是正常的,(最多)等待十分钟左右就可以访问了。如果还不行,那很可能是 github 发送给你的验证邮件你没有打开看,据多方反映,验证后就没问题了。
- 如果在
hexo d之后出现fatal: 'username.github.io' does not appear to be a git repository,一是检查 repo 的名字是否合乎规范、是否含有大写字母、config.yml 中的 deploy 配置是否正确,二是把 git bash 关掉,重新打开再执行命令。 - 有的同学可能不是 IT 界的,或者对shell 命令不太了解。在要求输入密码时,你输入之后密码是不显示的,这是为了安全,并非是你没输上。
- 出现乱码的,不要使用 windows 中的「记事本」打开并编辑文件,推荐使用 sublime text,很简单。如果已经在「记事本」中编辑过,需要使用 sublime text 转码为「utf8」。
- 安装 hexo 时卡在那儿不动,很可能是网络不给力,能全局 break wall 就好了。
- 遇到什么其他的问题,不妨删除.deploy 和db.json 再重新生成试一试。
tips
hexo现在支持更加简单的命令格式了,比如:
hexo g == hexo generate
hexo d == hexo deploy
hexo s == hexo server
hexo n == hexo new
在下一节中,我们会介绍如何配置自己的网站,如何撰写和发表文章。
hexo系列教程:(三)hexo博客的配置、使用
在上一节中,我们在本地和github搭建起了自己的hexo博客站点,但是还未发表过文章,站点的配置还是原来的默认值。在本节,我们来进行个性化的设置,将站点打造成自己的,同时介绍下怎么撰文和发表。
站点配置用到两个文件,一个是对整站的配置H:\hexo\_config.yml,另一个是对主题的配置H:\hexo\themes\light_config.yml,我们来分别介绍。
H:\hexo\ _config.yml
1 |
# Hexo Configuration |
现在可以hexo generate,hexo server,打开localhost:4000查看效果了。
H:\hexo\themes\light_config.yml
1 |
menu: #站点右上角导航栏,暂时默认,后面介绍修改 |
上面改动的不多,更多的是介绍了下功能,后面会相继介绍具体的修改方法。
好了,站点配置好了,我想发表一篇文章,怎么做呢?
hexo new "my new post"- 在
H:\hexo\source\_posts中打开这个文件(打开方式用“记事本”即可),配置开头。
1 |
title: my new post #可以改成中文的,如“新文章” |
hexo server,访问localhost:4000预览效果。(退出server用Ctrl+c)hexo deploy,同步到github。访问网站看看效果。
现在为止,我们已经搭建起博客,进行一些基本配置,并学会了怎么发表文章。后面会陆续介绍一些高级点的个性化设置,不过在此之前,你可以正常发表博客了。后面的文章你可以不看,有意者请跟随。
hexo系列教程:(四)hexo博客的优化技巧
上一节中我们已经学会了用hexo发布博客,这里再介绍一些小技巧对博客站点进行优化,实现更加丰富的功能。
后面的修改优化主要是针对 theme/light 的,如果你想偷懒直接使用配置好的主题,欢迎使用我的Lightum。如果你想使用其他主题,可以去Wiki挑选一款喜欢的。
添加“多说”评论
hexo默认使用国外比较流行的disqus,不过,按照“因地制宜”的原则,我们修改为国内用的多又好用的“多说”评论系统。步骤非常简单:
- 在多说进行注册,获得通用代码。
- 将通用代码粘贴到
themes\light\layout\_partial\comment.ejs里面,如下:
1 |
<% if ( page.comments){ %>
|
很多网友反映自己使用的非 light 主题中找不到相应的文件。我的这些修改都是在 light主题中,其他主题请参考《Hexo使用多说教程》。
添加『页面导航』
在刚才添加「多说」评论的文件中,加入一段代码,如下:
1 |
<% if ( page.comments){ %>
<nav id="pagination" >
|
添加“百度分享”
到百度分享获得代码,在themes/light/layout/_partial/article.ejs中,将<%-partial('post/share')%>删掉,替换为百度分享的代码。
添加小图标
在themes/light/layout/_partial/head.ejs里将<link href="<%- config.root %>favicon.png" rel="icon">替换为<link href="<%- config.root %>favicon.ico" rel="icon" type="image/x-ico">。将favicon.ico图标文件放在source目录下。制作图标的网站,http://www.faviconer.com。
添加分类、标签云widget
很简单,在themes/light/_config.yml中,添加如下:
1 |
widgets: |
添加友情链接widget
- 在
themes/light/layout/_widget中新建名为blogroll.ejs的文件,编辑内容如下:
1 |
<div class="widget tag"> |
- 在
themes/light/_config.yml中,添加如下:
1 |
widgets: |
生成post时默认生成categories配置项
在scaffolds/post.md中,添加一行categories:。同理可应用在page.md和photo.md。
添加新浪微博widget(微博秀)
- 去新浪微博开放平台设置和生成微博秀代码。
- 在
themes/light/layout/_widget中新建名为weibo.ejs的文件,将刚才的代码直接保存到这里。 - 在
themes/light/_config.yml中,添加如下:
1 |
widgets: |
导航栏添加”关于”
hexo new page "about"- 到
source/about/index.md编辑内容。 - 在
themes/light/_config.yml中,添加如下:
1 |
menu: |
主页文章显示摘要
编辑md文件的时候,在要作为摘要的文字后面添加<!--more-->即可。
优化是无止境的,今天先写这些。
速度优化
由于 Google 被大陆屏蔽,Github 从大陆访问也比较慢,且不太稳定。所以一方面可以把 Blog 迁移到国内,比如我现在使用的Gitcafe提供的免费 Page 服务,又快又好用,赞一个,可以参考我写的《托管博客到gitcafe》 。另一方面,建议把 google 提供的 jquery 和 fonts api 全换掉。由于不同的主题其位置不同,最好是搜索一下。
Unix/Linux 用户在 shell 中切换到自己的主题目录下面;Windows 用户用 Git Bash 切换到主题目录下面。然后用grep 'jquery' -r ./搜索使用 jquery 的位置,如果是用的 google 的,则替换成国内的,我用的是百度,//libs.baidu.com/jquery/2.0.3/jquery.min.js,//libs.baidu.com/jquery/1.8.0/jquery.min.js,替换后如图(我的是 light 主题):

然后替换google fonts,同样的方法,grep 'fonts' -r ./,找到后替换为//fonts.useso.com/css?family=Lato:400,400italic即可。
以上只是针对我的版本我的主题,读者根据自己的情况适当调整吧,比如 jquery 的版本号,你现在的是哪个版本就用 baidu 的哪个版本。把地址输入浏览器地址栏看能正确打开嘛,如果可以,说明是可用的。
全部替换完,更新自己的博客,然后查看源代码,看看是否全换成国内的了。
hexo系列教程的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- 一步一步使用ABP框架搭建正式项目系列教程
研究ABP框架好多天了,第一次看到这个框架的名称到现在已经很久了,但由于当时内功有限,看不太懂,所以就只是大概记住了ABP这个名字.最近几天,看到了园友@阳光铭睿的系列ABP教程,又点燃了我内心要研究 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
随机推荐
- eclipse-mysql-tomcat bug之旅
赶紧默念三遍google大法好... [连接数据库 servlet调用提示找不到可加载的driver,普通的.java文件没问题] 表示不服啊...明明可以连上啊...为什么多了几个中间界面就不好使了 ...
- java 面向对象编程 第18章——网络编程
1. TCP/IP协议模型 应用层:应用程序: 传输层:将数据套接端口,提供端到端的通信服务: 网络互联层:负责数据包装.寻址和路由,同时还包含网间控制报文协议: 网络接口层:提供TCP/IP协议的 ...
- 绑定本地Service并与之通信-----之二
import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.app.Se ...
- eclipse ee 装oepe(Oracle Enterprise Pack for Eclipse)插件
eclipse j2ee 安装weblogic插件Oracle Enterprise Pack for Eclipse(oepe) eclipse j2ee已经集成了常见的几个服务器容器,比如tomc ...
- flash as3 socket安全服务网关(socket policy file server)
关键字: SecurityErrorEvent socket as3 flash有着自己的一套安全处理模式,在socket方面,我这样的菜鸟无法理解他的好处:一句话,不怀好意的人如果想用flash写一 ...
- MONGODB 查询
1,mongoDB 取模运算:db.person.find({index:{$mod:[5,1]}})db.person.find({index:{$not:{$mod:[5,1]}}})2,name ...
- jQuery初步
1.jQuery开发步骤 jQuery是第三方开源组织基于js写的一款跨主流浏览器的实用库. (1)引用第三方js库文件,<script type="text/javascript&q ...
- SrcollView分页加载数据(布局)
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=& ...
- SharePoint 2013 开发——获取用户配置文件属性内容(User Profile)
博客地址:http://blog.csdn.net/FoxDave 本篇我们应用SharePoint CSOM(.NET)来读取用户配置文件的信息,个人开始逐渐倾向于客户端模型,因为不用远程登录到 ...
- Android中判断当前网络是否可用
转载原文地址:http://www.cnblogs.com/renqingping/archive/2012/10/18/Net.html 当前有可用网络,如下图: 当前没有可用网络,如下图: 实现步 ...