前言:博主目前大三,Web 前端爱好者。写博客的好处,不是为了写而写,而是一个记录思想的过程。不要考虑它能带给你什么,而是你自己从中收获了什么。

最近刚好有空,于是就参照网上的各种教程,搭建了一个博客。现在把 Hexo + GitHub Pages 搭建博客的完整过程记录下来:

个人博客地址:http://www.lovebxm.com

大概流程

1. 搭建 Node.js 环境

2. 搭建 Git 环境

3. GitHub 注册和配置

4. 安装配置 Hexo

5. 关联 Hexo 与 GitHub Pages

6. GitHub Pages 地址解析到个人域名

7. Hexo 的常用操作

8. 结束语

搭建 Node.js 环境

为什么要搭建 Node.js 环境? - 因为 Hexo 博客系统是基于 Node.js 编写的

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可以在非浏览器环境下,解释运行 JS 代码。

在 Node.js 官网:https://nodejs.org/en/ 下载安装包 v6.10.3 LTS

保持默认设置即可,一路Next,安装很快就结束了。

然后打开命令提示符,输入 node -vnpm -v,出现版本号则说明 Node.js 环境配置成功,第一步完成!!!

搭建 Git 环境

为什么要搭建 Git 环境? - 因为需要把本地的网页和文章等提交到 GitHub 上。

Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

在 Git 官网:https://git-scm.com/ 下载安装包 Git-2.13.0-64-bit.exe

桌面右键,打开 Git Bush Here,输入 git --version,出现版本号则说明 Git 环境配置成功,第二步完成!!!

GitHub 注册和配置

GitHub 是一个代码托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。

Github注册:https://github.com/

创建仓库:Repository name 使用自己的用户名,仓库名规则:

注意yourname 必须是你的用户名。

yourname/yourname.github.io

访问 yourname.github.io,如果可以正常访问,那么 Github 的配置已经结束了。

到此搭建 Hexo 博客的相关环境配置已经完成,下面开始讲解 Hexo 的相关操作

安装配置 Hexo

Hexo 是一个快速、简洁且高效的博客框架,使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

强烈建议你花20分钟区读一读 Hexo 的官方文档:https://hexo.io/zh-cn/

使用 npm 安装 Hexo:在命令行中输入

npm install hexo-cli -g

然后你将会看到下图,可能你会看到一个WARN,但是不用担心,这不会影响你的正常使用。

查看Hexo的版本

hexo version

安装 Hexo 完成后,请执行下列命令来初始化 Hexo,用户名改成你的,Hexo 将会在指定文件夹中新建所需要的文件。

hexo init bxm0927.github.io

cd bxm0927.github.io

npm install

新建完成后,指定文件夹的目录如下:

.
├── .deploy         #需要部署的文件
├── node_modules    #Hexo插件
├── public          #生成的静态网页文件
├── scaffolds       #模板
├── source          #博客正文和其他源文件,404、favicon、CNAME 都应该放在这里
| ├── _drafts       #草稿
| └── _posts        #文章
├── themes          #主题
├── _config.yml     #全局配置文件
└── package.json    #npm 依赖等

运行本地 Hexo 服务

hexo server
或者
hexo s

您的网站会在 http://localhost:4000 下启动。如果 http://localhost:4000 能够正常访问,则说明 Hexo 本地博客已经搭建起来了,只是本地哦,别人看不到的。下面,我们要部署到Github。

注意1:执行hexo server提示找不到该指令

解决办法:在Hexo 3.0 后server被单独出来了,需要安装server,安装的命令如下:

sudo npm install hexo-server
或者
npm install hexo -server --save

关联 Hexo 与 GitHub Pages

我们如何让本地git项目与远程的github建立联系呢?用 SSH keys

生成SSH keys

输入你自己的邮箱地址

ssh-keygen -t rsa -C "80583600@qq.com"

在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入,我们按回车不设置密码。

添加 SSH Key 到 GitHub

打开 C:\Users\bxm09\.ssh\id_rsa.pub,此文件里面内容为刚才生成的密钥,准确的复制这个文件的内容,粘贴到 https://github.com/settings/sshnew SSH key

测试

可以输入下面的命令,看看设置是否成功,git@github.com的部分不要修改:

ssh -T git@github.com

如果是下面的反馈:

The authenticity of host ‘github.com (207.97.227.239)’ can’t be established.

RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.

Are you sure you want to continue connecting (yes/no)?

不要紧张,输入yes就好,然后会看到:

Hi aierui! You've successfully authenticated, but GitHub does not provide shell access.

配置Git个人信息

现在你已经可以通过 SSH 链接到 GitHub 了,还有一些个人信息需要完善的。

Git 会根据用户的名字和邮箱来记录提交。GitHub 也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的。

git config --global user.name "bxm0927"
git config --global user.email "80583600@qq.com"

配置 Deployment

_config.yml文件中,找到Deployment,然后按照如下修改,用户名改成你的:

需要注意的是:冒号后面记得空一格!

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
  type: git
  repo: git@github.com:bxm0927/bxm0927.github.io.git
  branch: master

本地文件提交到 GitHub Pages

// 删除旧的 public 文件
hexo clean

// 生成新的 public 文件
hexo generate
或者
hexo g

// 开始部署
hexo deploye
或者
hexo d

在浏览器中输入 https://bxm0927.github.io (用户名改成你的)看到了 Hexo 与 GitHub Pages 已经成功关联了,哇哇哇哇哇哇,开心死你了,不要忘了回来给我点赞哟 ~

注意1:若上面操作失败,则需要提前安装一个扩展:

npm install hexo-deployer-git --save

注意2:如果在执行 hexo d 后,出现 error deployer not found:github 的错误(如下),则是因为没有设置好 public key 所致,重新详细设置即可。

Permission denied (publickey).

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

注意3:怎么避免 .md 文件被解析?

Hexo原理就是hexo在执行hexo generate时会在本地先把博客生成的一套静态站点放到public文件夹中,在执行hexo deploy时将其复制到.deploy文件夹中。Github的版本库通常建议同时附上README.md说明文件,但是hexo默认情况下会把所有md文件解析成html文件,所以即使你在线生成了 README. md,它也会在你下一次部署时被删去。怎么解决呢?

在执行hexo deploy前把在本地写好的README.md文件复制到.deploy文件夹中,再去执行hexo deploy。

GitHub Pages 地址解析到个人域名

Github Pages 是面向用户、组织和项目开放的公共静态页面搭建托管服 务,站点可以被免费托管在 Github 上,你可以选择使用 Github Pages 默 认提供的域名 github.io 或者自定义域名来发布站点。

看着博客的域名是二级域名,总有一种寄人篱下的感觉,为了让这个小窝看起来更加正式,我在阿里云上买了一个域名,打算将博客绑定自己的域名。

进行该绑定过程,其实就是一个重定向的过程。

在 GitHub 仓库的根目录下建立一个 CNAME 的文本文件(注意:没有扩展名),文件里面只能输入一个你的域名,不能加http://

www.lovebxm.com

注意:CNAME 一定是在你 Github 项目的 master 根目录下

进入阿里云域名解析地址,添加解析:

  1. 记录类型选择CNAME
  2. 主机记录填www
  3. 解析线路选择默认
  4. 记录值填yourname.github.io
  5. TTL值为10分钟
  6. 再添加一个解析,记录类型A
  7. 主机记录填www
  8. 解析线路选择默认
  9. 记录值填你GitHub 的ip地址(在cmd中ping:)
ping bxm0927.github.com

点击保存,等 1 分钟,访问下你自己的域名,一切就ok了。

域名绑定成功,域名解析成功,因此你在浏览中输入 www.lovebxm.com,或 lovebxm.com 就可以访问到博客了,输入 bxm0927.github.io 会重定向到 www.lovebxm.com。过程:www 的方式,会先解析成 http://xxxx.github.io,然后根据 CNAME 再变成 www

注意:CNAME文件在下次 hexo deploy的时候就消失了,需要重新创建,这样就很繁琐

方法一:每次 hexo d 之后,就去 GitHub 仓库根目录新建 CNAME文件

方法二:在 hexo g 之后, hexo d 之前,把CNAME文件复制到 “\public" 目录下面,里面写入你要绑定的域名。

方法三(推荐):将需要上传至github的内容放在source文件夹,例如CNAME、favicon.ico、images等,这样在 hexo d 之后就不会被删除了。

方法四:通过安装插件实现永久保留

$ npm install hexo-generator-cname --save

之后在_config.yml中添加一条

plugins:
- hexo-generator-cname

需要注意的是:如果是在github上建立的CNAME文件,需要先clone到本地,然后安装插件,在deploy上去即可。CNAME只允许一个域名地址。

注意1:每次生成的 CNAME 都是 yoursite.com 怎么解决?

修改 _config.yml

url: http://www.lovebxm.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

Hexo 的常用操作

发表一篇文章

hexo new "文章标题"

D:\GitHub\Hexo\test>hexo new "文章标题"
INFO  Created: D:\GitHub\Hexo\test\source\_posts\文章标题.md

在本地博客文件夹 source\_posts 文件夹下看到我们新建的 markdown 文件。

当然,我们也可以手动添加Markdown文件在source->_deploy文件夹下,其效果同样可以媲美hexo new

文章编辑好之后,运行生成、部署命令:

hexo clean

hexo g

hexo d

当然你也可以执行下面的命令,相当于上面两条命令的效果

hexo clean

hexo d -g

新建一个自定义页面

hexo new page folder

文章如何添加多个标签

有两种多标签格式

tags: [a, b, c]
或
tags:
  - a
  - b
  - c

显示部分文章内容

如果在博客文章列表中,不想全文显示,可以增加 <!-- more -->, 后面的内容就不会显示在列表。

<!--more-->

更改主题

官方主题库:https://hexo.io/themes/

Hexo主题非常,推荐使用 Next 为主题,请阅读 Next 的官方文档( http://theme-next.iissnan.com/ ),5 分钟快速安装。

再提示一点,大家可以hexo主题修改一步就hexo s看下变化,初次接触对参数不清楚。只有hexo s后在可以在本地浏览到效果,Ctrl+C 停止服务器。

添加插件

添加 sitemap 和 feed 插件

切换到你本地的 hexo 目 CIA ,在命令行窗口,输入以下命令

npm install hexo-generator-feed -save
npm install hexo-generator-sitemap -save

修改 _config.yml,增加以下内容

# Extensions
Plugins:
- hexo-generator-feed
- hexo-generator-sitemap
#Feed Atom
feed:
  type: atom
  path: atom.xml
  limit: 20
#sitemap
sitemap:
  path: sitemap.xml

再执行以下命令,部署服务端

hexo d -g

配完之后,就可以访问 https://bxm0927.github.io/atom.xmlhttps://bxm0927.github.io/sitemap.xml ,发现这两个文件已经成功生成了。

添加 404 页面

GitHub Pages 自定义404页面非常容易,直接在根目录下创建自己的404.html就可以。但是自定义404页面仅对绑定顶级域名的项目才起作用,GitHub默认分配的二级域名是不起作用的,使用hexo server在本机调试也是不起作用的。

其实,404页面可以做更多有意义的事,来做个404公益项目吧。

推荐使用腾讯公益404 http://www.qq.com/404/

<script type="text/javascript"
        src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js"
        charset="utf-8"
        homePageUrl="http://www.lovebxm.com/"
        homePageName="回到我的主页">
</script>

复制上面代码,贴粘到目录下新建的404.html即可!

多PC同步管理博客

很多人可能家里一台笔记本,公司一个台式机,想两个同时管理博客,同时达到备份的博客主题、文章、配置的目的。下面就介绍一下用github来备份博客并同步博客。

  1. A电脑备份博客内容到github

配置.gitignore文件。进入博客目录文件夹下,找到此文件,用sublime text 打开,在最后增加两行内容/.deploy_git和/public

  1. 初始化仓库。

在博客根目录下,在git bash下依次执行git init和git remote add origin 为远程仓库地址。

  1. 同步到远程仓库。

gitbash下依次执行以下命令

git add . #添加目录下所有文件

git commit -m "更新说明" #提交并添加更新说明

git push -u origin master #推送更新到远程仓库
  1. B电脑拉下远程仓库文件

在B电脑上同样先安装好node、git、ssh、hexo,然后建好hexo文件夹,安装好插件,(然后选做:将备份到远程仓库的文件及文件夹删除),然后执行以下命令:

git init

git remote add origin <server>

git fetch --all

git reset --hard origin/master
  1. 发布博客后同步

在B电脑发布完博客之后,记得将博客备份同步到远程仓库

执行以下命令:

git add .

#可以用git master 查看更改内容

git commit -m "更新信息"

git push -u origin master  #以后每次提交可以直接git push

平时同步管理

每次想写博客时,先执行:git pull进行同步更新。发布完文章后同样按照上面的 发布博客后同步 同步到远程仓库。

中文乱码

在 md 文件中写中文内容,发布出来后为乱码,原因是 md 的编码不对,将 md 文件另存为UTF-8编码的文件即可解决问题。

结束语

建站的系统有很多,如:

- Hexo + GitHub Pages

- Jekyll + GitHub Pages

- WordPress + 服务器 + 域名

- DeDeCMS + 服务器 + 域名

- …

使用 Hexo + GitHub Pages 建站,有优点也有缺点:

- GitHub Pages 不支持数据库管理,所以你只能做静态页面的博客,不能像其他博客(如 WordPress)那样通过数据库管理自己的博客内容。

- 但是,GitHub Pages 无需购置服务器,免服务器费的同时还能做负载均衡,github pages有300M免费空间。

- 个人博客真的有必要用数据库吗?答案是否定的。博客静态化,评论记录使用第三方的 网易云跟帖就可以了。静态的博客更有利于搜索引擎蜘蛛爬取,轻量化的感觉真的很好。

- 通过 Hexo 你可以轻松地使用 Markdown 编写文章,非常符合我的口味。Markdown 真的是专门针对程序员开发的语言啊,现在感觉没有 Markdown什么都不想写。什么富文本编辑器,什么word,太麻烦了!而且样式都好丑!效率太低!

推荐几个很好用的在线 Markdown 编辑器:

- 作业部落:https://www.zybuluo.com/mdeditor

- 马克飞象:https://maxiang.io

推荐图床:

- 极简图床 + chrome 插件 + 七牛空间,七牛云储存提供10G的免费空间,以及每月10G的流量,存放个人博客外链图片最好不过了,七牛云储存还有各种图形处理功能、缩略图、视频存放速度也给力。

body { width: 45em; border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto }
body .markdown-body { padding: 30px }
.markdown-body { color: #333333; overflow: hidden; font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif; font-size: 16px; line-height: 1.6 }
.markdown-body a { background: transparent }
.markdown-body a:active,.markdown-body a:hover { outline: 0 }
.markdown-body b,.markdown-body strong { font-weight: bold }
.markdown-body mark { background: #ff0; color: #000; font-style: italic; font-weight: bold }
.markdown-body sub,.markdown-body sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline }
.markdown-body sup { top: -0.5em }
.markdown-body sub { bottom: -0.25em }
.markdown-body h1 { font-size: 2em; margin: 0.67em 0 }
.markdown-body img { border: 0 }
.markdown-body hr { height: 0 }
.markdown-body pre { overflow: auto }
.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp { font-family: monospace, monospace; font-size: 1em }
.markdown-body input { color: inherit; font: inherit; margin: 0 }
.markdown-body html input[disabled] { cursor: default }
.markdown-body input { line-height: normal }
.markdown-body input[type="checkbox"] { padding: 0 }
.markdown-body table { border-collapse: collapse; border-spacing: 0 }
.markdown-body td,.markdown-body th { padding: 0 }
.markdown-body .codehilitetable { border: 0; border-spacing: 0 }
.markdown-body .codehilitetable tr { border: 0 }
.markdown-body .codehilitetable pre,.markdown-body .codehilitetable div.codehilite { margin: 0 }
.markdown-body .linenos,.markdown-body .code,.markdown-body .codehilitetable td { border: 0; padding: 0 }
.markdown-body td:not(.linenos) .linenodiv { padding: 0 !important }
.markdown-body .code { width: 100% }
.markdown-body .linenos div pre,.markdown-body .linenodiv pre,.markdown-body .linenodiv { border: 0 }
.markdown-body .code div pre,.markdown-body .code div { border: 0 }
.markdown-body * { }
.markdown-body input { font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; line-height: 1.4 }
.markdown-body a { color: #4183c4; text-decoration: none }
.markdown-body a:hover,.markdown-body a:focus,.markdown-body a:active { text-decoration: underline }
.markdown-body hr { height: 0; margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom: 1px solid #ddd }
.markdown-body hr::before,.markdown-body hr::after { display: table; content: " " }
.markdown-body hr::after { clear: both }
.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6 { margin-top: 15px; margin-bottom: 15px; line-height: 1.1 }
.markdown-body h1 { font-size: 30px }
.markdown-body h2 { font-size: 21px }
.markdown-body h3 { font-size: 16px }
.markdown-body h4 { font-size: 14px }
.markdown-body h5 { font-size: 12px }
.markdown-body h6 { font-size: 11px }
.markdown-body blockquote { margin: 0 }
.markdown-body ul,.markdown-body ol { padding: 0; margin-top: 0; margin-bottom: 0 }
.markdown-body ol ol,.markdown-body ul ol { list-style-type: lower-roman }
.markdown-body ul ul ol,.markdown-body ul ol ol,.markdown-body ol ul ol,.markdown-body ol ol ol { list-style-type: lower-alpha }
.markdown-body dd { margin-left: 0 }
.markdown-body code,.markdown-body pre,.markdown-body samp { font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px }
.markdown-body pre { margin-top: 0; margin-bottom: 0 }
.markdown-body kbd { background-color: #e7e7e7; background-image: linear-gradient(#fefefe, #e7e7e7); background-repeat: repeat-x; border: 1px solid #cfcfcf; color: #000; padding: 3px 5px; line-height: 10px; font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; display: inline-block }
.markdown-body>*:first-child { margin-top: 0 !important }
.markdown-body>*:last-child { margin-bottom: 0 !important }
.markdown-body .headeranchor-link { position: absolute; top: 0; bottom: 0; left: 0; display: block; padding-right: 6px; padding-left: 30px; margin-left: -30px }
.markdown-body .headeranchor-link:focus { outline: none }
.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6 { position: relative; margin-top: 1em; margin-bottom: 16px; font-weight: bold; line-height: 1.4 }
.markdown-body h1 .headeranchor,.markdown-body h2 .headeranchor,.markdown-body h3 .headeranchor,.markdown-body h4 .headeranchor,.markdown-body h5 .headeranchor,.markdown-body h6 .headeranchor { display: none; color: #000; vertical-align: middle }
.markdown-body h1:hover .headeranchor-link,.markdown-body h2:hover .headeranchor-link,.markdown-body h3:hover .headeranchor-link,.markdown-body h4:hover .headeranchor-link,.markdown-body h5:hover .headeranchor-link,.markdown-body h6:hover .headeranchor-link { height: 1em; padding-left: 8px; margin-left: -30px; line-height: 1; text-decoration: none }
.markdown-body h1:hover .headeranchor-link .headeranchor,.markdown-body h2:hover .headeranchor-link .headeranchor,.markdown-body h3:hover .headeranchor-link .headeranchor,.markdown-body h4:hover .headeranchor-link .headeranchor,.markdown-body h5:hover .headeranchor-link .headeranchor,.markdown-body h6:hover .headeranchor-link .headeranchor { display: inline-block }
.markdown-body h1 { padding-bottom: 0.3em; font-size: 2.25em; line-height: 1.2; border-bottom: 1px solid #eee }
.markdown-body h2 { padding-bottom: 0.3em; font-size: 1.75em; line-height: 1.225; border-bottom: 1px solid #eee }
.markdown-body h3 { font-size: 1.5em; line-height: 1.43 }
.markdown-body h4 { font-size: 1.25em }
.markdown-body h5 { font-size: 1em }
.markdown-body h6 { font-size: 1em; color: #777 }
.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre,.markdown-body .admonition { margin-top: 0; margin-bottom: 16px }
.markdown-body hr { height: 4px; padding: 0; margin: 16px 0; background-color: #e7e7e7; border: 0 none }
.markdown-body ul,.markdown-body ol { padding-left: 2em }
.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul { margin-top: 0; margin-bottom: 0 }
.markdown-body li>p { margin-top: 16px }
.markdown-body dl { padding: 0 }
.markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: bold }
.markdown-body dl dd { padding: 0 16px; margin-bottom: 16px }
.markdown-body blockquote { padding: 0 15px; color: #777; border-left: 4px solid #ddd }
.markdown-body blockquote>:first-child { margin-top: 0 }
.markdown-body blockquote>:last-child { margin-bottom: 0 }
.markdown-body table { display: block; width: 100%; overflow: auto }
.markdown-body table th { font-weight: bold }
.markdown-body table th,.markdown-body table td { padding: 6px 13px; border: 1px solid #ddd }
.markdown-body table tr { background-color: #fff; border-top: 1px solid #ccc }
.markdown-body table tr:nth-child(2n) { background-color: #f8f8f8 }
.markdown-body img { max-width: 100% }
.markdown-body code,.markdown-body samp { padding: 0; padding-top: 0.2em; padding-bottom: 0.2em; margin: 0; font-size: 85%; background-color: rgba(0,0,0,0.04) }
.markdown-body code::before,.markdown-body code::after { letter-spacing: -0.2em; content: " " }
.markdown-body pre>code { padding: 0; margin: 0; font-size: 100%; white-space: pre; background: transparent; border: 0 }
.markdown-body .codehilite { margin-bottom: 16px }
.markdown-body .codehilite pre,.markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f7f7f7 }
.markdown-body .codehilite pre { margin-bottom: 0 }
.markdown-body pre { }
.markdown-body pre code { display: inline; max-width: initial; padding: 0; margin: 0; overflow: initial; line-height: inherit; background-color: transparent; border: 0 }
.markdown-body pre code::before,.markdown-body pre code::after { content: normal }
.markdown-body .admonition { position: relative; border: 1px solid #e0e0e0; border-left: 6px solid #333; padding: 10px 10px 10px 30px }
.markdown-body .admonition table { color: #333 }
.markdown-body .admonition p { padding: 0 }
.markdown-body .admonition-title { font-weight: bold; margin: 0 }
.markdown-body .admonition>.admonition-title { color: #333 }
.markdown-body .attention>.admonition-title { color: #a6d796 }
.markdown-body .caution>.admonition-title { color: #d7a796 }
.markdown-body .hint>.admonition-title { color: #96c6d7 }
.markdown-body .danger>.admonition-title { color: #c25f77 }
.markdown-body .question>.admonition-title { color: #96a6d7 }
.markdown-body .note>.admonition-title { color: #d7c896 }
.markdown-body .admonition::before,.markdown-body .attention::before,.markdown-body .caution::before,.markdown-body .hint::before,.markdown-body .danger::before,.markdown-body .question::before,.markdown-body .note::before { font: normal normal 16px fontawesome-mini; line-height: 1.5; color: #333; position: absolute; left: 0; top: 0; padding-top: 10px; padding-left: 10px }
.markdown-body .admonition::before { content: " "; color: 333 }
.markdown-body .attention::before { content: " "; color: #a6d796 }
.markdown-body .caution::before { content: " "; color: #d7a796 }
.markdown-body .hint::before { content: " "; color: #96c6d7 }
.markdown-body .danger::before { content: " "; color: #c25f77 }
.markdown-body .question::before { content: " "; color: #96a6d7 }
.markdown-body .note::before { content: " "; color: #d7c896 }
.markdown-body .admonition::after { content: normal }
.markdown-body .attention { border-left: 6px solid #a6d796 }
.markdown-body .caution { border-left: 6px solid #d7a796 }
.markdown-body .hint { border-left: 6px solid #96c6d7 }
.markdown-body .danger { border-left: 6px solid #c25f77 }
.markdown-body .question { border-left: 6px solid #96a6d7 }
.markdown-body .note { border-left: 6px solid #d7c896 }
.markdown-body .admonition>*:first-child { margin-top: 0 !important }
.markdown-body .admonition>*:last-child { margin-bottom: 0 !important }
.markdown-body .progress { display: block; width: 300px; margin: 10px 0; height: 24px; background-color: #ededed; position: relative }
.markdown-body .progress-label { position: absolute; text-align: center; font-weight: bold; width: 100%; margin: 0; line-height: 24px; color: #333; white-space: nowrap; overflow: hidden }
.markdown-body .progress-bar { height: 24px; float: left; background-color: #96c6d7; background-image: linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
) }
.markdown-body .progress-100plus .progress-bar { background-color: #a6d796 }
.markdown-body .progress-80plus .progress-bar { background-color: #c6d796 }
.markdown-body .progress-60plus .progress-bar { background-color: #d7c896 }
.markdown-body .progress-40plus .progress-bar { background-color: #d7a796 }
.markdown-body .progress-20plus .progress-bar { background-color: #d796a6 }
.markdown-body .progress-0plus .progress-bar { background-color: #c25f77 }
.markdown-body .candystripe-animate .progress-bar { }
.markdown-body .gloss .progress-bar { }
.markdown-body .critic_mark { background: #ff0 }
.markdown-body .critic_delete { color: #c82829; text-decoration: line-through }
.markdown-body .critic_insert { color: #718c00; text-decoration: underline }
.markdown-body .critic_comment { color: #8e908c; font-style: italic }
.markdown-body .headeranchor { font: normal normal 16px octicons-anchor; line-height: 1; display: inline-block; text-decoration: none }
.headeranchor::before { content: "" }
.markdown-body .task-list-item { list-style-type: none }
.markdown-body .task-list-item+.task-list-item { margin-top: 3px }
.markdown-body .task-list-item input { margin: 0 4px 0.25em -20px; vertical-align: middle }

可能是最详细的 Hexo + GitHub Pages 搭建博客的教程的更多相关文章

  1. Hexo + GitHub Pages搭建博客

    搭建 Node.js 环境 为什么要搭建 Node.js 环境? – 因为 Hexo 博客系统是基于 Node.js 编写的 Node.js 是一个基于 Chrome V8 引擎的 JavaScrip ...

  2. 用GitHub Pages搭建博客(七)

    本篇介绍百度统计.百度搜索 一般来讲,部署了一个网站后,我们需要知道网站的浏览量,以便知道网站是否有人访问. 在Jekyll的模板中,由于国外开发者更多,一般的主题默认都开发了谷歌统计(Google ...

  3. 用GitHub Pages搭建博客(五)

    本篇介绍GitHub Pages自定义域名 在用GitHub Pages搭建博客(二)中介绍到,默认的GitHub Pages域名就是仓库地址,即: 账号名.github.io 如果我们要使用自定义域 ...

  4. 用GitHub Pages搭建博客(六)

    本篇介绍GitHub Pages网站加速 在上一篇提到如何对GitHub Pages配置自定义域名.其实,不论GitHub Pages的默认域名还是自定义域名,都使用了GitHub的CDN进行加速,虽 ...

  5. Hexo+github如何搭建博客

    前言 博客有第三方平台,也可以自建,比较早的有博客园.CSDN,近几年新兴的也比较多诸如:WordPress.segmentFault.简书.掘金.知乎专栏.Github Page 等等. 这次我要说 ...

  6. 用GitHub Pages搭建博客(三)

    本篇介绍通过git工具替换网站主题,并发布 Jekyll和Hexo的简要介绍   GitHub Pages是基于Jekyll构建的,Jekyll 是一个简单的博客形态的静态站点生产工具,它有一个模版目 ...

  7. GitHub Pages搭建博客HelloWorld版

    1.原理 GitHub作为博客相关文件的托管方,你把按照jekyll规定的目录及文件上传至github库中,通过约定的库名称即可访问到经过jekyll渲染后的博客页面. 2.搭建过程 2.1.注册Gi ...

  8. 用GitHub Pages搭建博客(一)

    什么是GitHub Pages GitHub官网介绍 GitHub Pages 官网是这样介绍的: Websites for you and your projects. 给你和你的项目的网站. Ho ...

  9. 用GitHub Pages搭建博客(二)

    本篇介绍基本GitHub Pages的搭建流程 GitHub账号及仓库创建 登录GitHub,录入用户名.邮箱.密码,创建成功后登录进入. 注册时,邮箱建议不使用QQ邮箱.因为一些第三方部署类网站不支 ...

随机推荐

  1. Pangolin学习

    0.1. 资料 0.2. 使用说明 0.3. HelloPangolin 0.4. Plot data with ros 0.1. 资料 泡泡机器人 github example opengl中摄像机 ...

  2. CSS3特效----图片动态提示效果

    需掌握的知识点: 1.掌握两个HTML5新标签figure以及figcaption的用法 2.掌握transform的属性特点,并能熟练运用 3.学会通过transition及transform配合, ...

  3. 使用WebGL加载Google街景图

    我们要实现的功能比较简单:首先通过坐标定位.我的位置.地址搜索等方式,调用google map api获取地址信息.然后根据地址信息中的全景信息获取当前缩放级别的全景信息.最终把这些全景信息通过Web ...

  4. MySQL 闪回工具之 binlog2sql

    生产上误删数据.误改数据的现象也是时常发生的现象,作为 DBA 这时候就需要出来补锅了,最开始的做法是恢复备份,然后从中找到需要的数据再进行修复,但是这个时间太长了,对于大表少数数据的修复来讲,动作太 ...

  5. Android studio 打开别人的工程

    Android Studio正确打开项目只需要两步,或者说找到两个文件进行简单的修改就好,最好在打开之前进行修改 (1)gradle-wrapper.properities,在项目下按照如下路径可以找 ...

  6. 分布式缓存技术redis学习—— 深入理解Spring Redis的使用

    关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么 ...

  7. 高性能mysql(二)——mysql的存储引擎

    在文件系统中,mysql将每个数据库保存为数据目录下的一个子目录.创建表时,mysql会在子目录下创建一个和表同名的.frm文件保存表的定义.例如创建一个名为mytable的表,mysql会在myta ...

  8. Java类加载和卸载的跟踪

    博客搬家自https://my.oschina.net/itsyizu/blog/ 什么是类的加载和卸载 Java程序的运行离不开类的加载,为了更好地理解程序的执行,有时候需要知道系统加载了哪些类.一 ...

  9. JSONObjec序列化对象过滤为null的属性

    @Test public void test3() { PgwReqtBody3002 pgwReqtBody3002 = new PgwReqtBody3002(); pgwReqtBody3002 ...

  10. 笔记本shift变粘贴,粘滞键设置已关闭

    之前手贱吧,拿湿抹布擦了擦笔记本电脑的自带键盘,然后部分按键失灵了. 本想着反正也都是在寝室用的,趁机找借口买了个机械键盘,啪啪啪... 刚开始好好的,后来发现一按shift就会粘贴,百度了下都说是粘 ...