一、前言
由于平时自己喜欢看一些技术类文章整理成Word笔记,总感觉这种方式太low,想自己搭建属于自己的博客,在网上查阅了一下,发现Hexo在GitHub或者是码云上搭建博客非常给力。然后自己也搭建了博客,这篇文章就记录了搭建的过程及一些优化。
二、入门Hexo
2.1、什么是Hexo
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(https://daringfireball.net/projects/markdown/) (或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。大家进入 Hexo官网(https://hexo.io/zh-cn/docs/) 进行查看。
2.2、安装Hexo
安装 Hexo 相当简单。然而在安装前,您必须检查电脑中是否已安装下列应用程序:Node.js:https://nodejs.org/en/Git:https://git-scm.com/cnpm :如果npm运行出错就安装cnpm国内镜像
所有必备的应用程序安装完成后,即可使用 npm或者cnpm 安装 Hexo。
打开Git Bash here,输入:
检查是否安装Hexo完成,查询是否成功,显示hexo-cli 版本就说明成功了
2.3、建站
安装一切所需的程序后,就可以开始建站了,就是创建我们的博客,大家也可以进入 建站官网(https://hexo.io/zh-cn/docs/setup) 查看。
新建一个文件夹,来管理我们的博客项目,执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。
2.3.1、运行命令
注:打开Git Bash here,输入:
进入创建的博客项目下进行安装
安装之后,整个博客项目目录如下:
2.3.2、访问URL
访问URL:http://localhost:4000,效果如下图:
到这里已经通过Hexo初步创建博客了,下面再来了解一下如何将我们的博客托管到GitHub服务器上。
2.4、托管到GitHub
2.4.1、GitHub创建repositories
进入GitHub官网中浏览器输入 https://github.com/ ,如果还没有账号就创建一个账号就好了。
登录自己的账号。直接new repositories 或者进入You repositories 再new repositories。
进入到创建 repositories 页面后,一定要注意,将新建的repository的名字为: Your account name.github.io。其他默认就好了。
2.4.2、配置
GitHub的Repository创建好后,再回到本地的Hexo的githubBlog项目中,找到在项目的根目录下_config.yml找到 deploy标签
在该文件下面添加如下内容:
注:repository: https://github.com/whb1990/whb1990.github.io 是自己刚刚创建Your account name.github.io 的repository,在Clone with HTTPS里面,复制粘贴就好了,冒号后面记得空格。branch 后面是master就好了。
在 _config.yml 找到 url 进行修改为:
2.4.3、部署
到这里就差不多了,接下来需要执行一些命令,将博客部署到GitHub上去。
打开Git Bash Here进入githubBlog 根目录下,首先需要安装一下 hexo-deployer-git(https://github.com/hexojs/hexo-deployer-git) 不然可能出现错误无法部署成功。
然后再执行以下命令:
或者简写
部署成功如下显示:
2.4.4、测试
我们进行访问 https://whb1990.github.io/ 和 http://localhost:4000/ 一样的页面说明是已经成功。
三、站点文件配置
在根githubBlog目录下 _config.yml文件,我们暂且称为站点配置文件,以便与后面讲到的主题配置文件(Next主题下的 _config.yml 文件)进行区分。
3.1、网站
参数
描述
title
网站标题
subtitle
网站副标题
description
网站描述
author
您的名字
language
网站使用的语言
timezone
网站时区。Hexo 默认使用您电脑的时区。时区列表。比如说:America/New_York, Japan, 和 UTC 。
3.2、目录
参数
描述
source_dir
资源文件夹,这个文件夹用来存放内容。
public_dir
公共文件夹,这个文件夹用于存放生成的站点文件。
tag_dir
标签文件夹
archive_dir
归档文件夹
category_dir
分类文件夹
code_dir
Include code 文件夹
i18n_dir
国际化(i18n)文件夹
skip_render
跳过指定文件的渲染,您可使用 glob 来配置路径
3.3、文章
参数
描述
默认值
new_post_name
新文章的文件名称
:title.md
default_layout
预设布局
post
auto_spacing
在中文和英文之间加入空格
false
titlecase
把标题转换为 title case
false
external_link
在新标签中打开链接
true
filename_case
把文件名称转换为 (1) 小写或 (2) 大写
0
render_drafts
显示草稿
false
post_asset_folder
启动 Asset 文件夹
false
relative_link
把链接改为与根目录的相对位址
false
future
显示未来的文章
true
highlight
代码块的设置
3.4、分类&标签
参数
描述
默认值
default_category
默认分类
uncategorized
category_map
分类别名
tag_map
标签别名
3.5、分页
参数
描述
默认值
per_page
每页显示的文章量 (0 = 关闭分页功能)
10
pagination_dir
分页目录
page
四、写作
4.1、创建文章
如:创建hello-world
如果不添加title,默认就是标题title: hello-world。
这里注意一下,如果创建带有中文的路径名称时,生成静态页面hexo g可能会报错。
这是由于 路径中存在 / 的符号转义问题 ,如:创建文章时命名为中文,一般都出现这个小问题。
解决方法,在命令行中输入:
然后重新生成文件部署就好了。
4.2、编辑文章
创建的文章在source/_posts目录下,打开文件进行编辑,完全支持Markdown语法。
五、Next主题
在 Hexo主题官网(https://hexo.io/themes/) 中有许多主题,大家喜欢什么就进行部署和编辑就好了,大致的思路都是差不多的。
我选择的 Next主题(https://github.com/theme-next/hexo-theme-next) ,网上很多也是用的这个主题。
5.1、安装
在githubBlog根目录下,执行以下命令:
上面的命令是clone最新版本的主题,也可以使用下面的命令clone指定版本的主题
安装完成之后,在themes下就会有next目录
5.2、切换主题
在项目根目录下打开 _config.yml 文件将 theme 设置为 next 即可:
部署之后查看效果如下,有点丑:
5.3、主题配置
一般配置都在 theme/next/-config.yml文件下配置。
5.3.1、修改整体布局
在 theme/next/-config.yml 找到 menu 看看自己博客所需的分类
在menu_settings如果设置icon: false则无图标,badges: true则标签都会显示数字
注:这里需要创建about页面,很简单,同创建标签tags、归档archives页面一样的方式,所需要创建的名称要与menu相对应,举例说明如下。
创建完成之后在自己项目查找,如我的是githubBlog/source/目录下查看新创建好的相关标签页面,里面包含各自的index.md文件,大家可以自行编辑了。
5.3.2、Schemes方案设置
自己喜欢什么风格自行选择。
5.3.3、social设置
使用方式: Key: permalink || icon Key表示标签显示,permalink表示URI连接,icon表示图标,自己添加所要显示的
注:图标库来源https://fontawesome.com/icons?from=io,在scheme: Pisces该效果不显示。
5.3.4、avatar头像设置
5.3.5、toc边栏中的目录设置
5.3.6、Creative Commons 4.0国际许可设置
5.3.7、sidebar侧边栏配置这里选择默认吧
5.3.8、save_scroll配置
5.3.9、excerpt_description
5.3.10、auto_excerpt配置
5.3.11、codeblock代码块配置
5.3.12、wechat_subscriber微信配置
5.3.13、footer 底部设置
5.3.14、favicon标签页图标
5.3.15、Math Equations Render Support 数学方程式渲染支持
5.3.16、Han Support 支持汉字
设置汉字支持,按照以下步骤:
1. 打开Git Bash Here,进入theme/next目录下
2. 获取该汉字支持Git module,执行命令以下命令获得
3. 设置汉字支持
4. 更新update
5.3.17、font字体设置
六、添加图标链接到GitHub
一般在右上角或者左上角,如配置右上角Fork_me_on_GitHub,按以下步骤进行
1. 打开 Fork_me_on_GitHub(https://github.blog/2008-12-19-github-ribbons/) 链接,里面有许多样式,选择自己喜欢的样式,将其复制下来。
2. 打开自己博客项目中的themes/next/layout/_layout.swig文件,搜索 将复制的内容粘贴到下面,如下:配置右上角的Fork_me_on_GitHub:
七、修改文章底部标签
在博客项目中找到/themes/next/layout/_macro/post.swig,搜索 rel="tag",将 #号 换成原先#号的样式
修改为图标的样式
八、设置背景动画样式
NexT里面有几种动画背景样式canvas_nest、three_waves、canvas_lines、canvas_sphere等
8.1、canvas_nest如下图所示:
按照以下步骤完成:
1. 打开Git Bash Here进入自己文件夹下/themes/next文件夹下
2. 下载安装 canvas_nest module`执行
在 /themes/next/source/lib查看会看到canvas_nest文件夹
3. 在/themes/next/_config.yml设置
8.2、 three_waves如图所示
three_waves(https://github.com/theme-next/theme-next-three) 设置步骤,和 canvas_nest(https://github.com/theme-next/theme-next-canvas-nest) 步骤是一样的。
下载完成后,在/themes/next/_config.yml设置
8.3、canvas_ribbon
canvas_ribbon只适合 scheme、Pisces这里不测试了,大家可以进入 canvas_ribbon(https://github.com/theme-next/theme-next-canvas-ribbon) 安装。
九、在网站底部添加访问量
1. 进入 \themes\next\layout\_partials\footer.swig 文件顶部第一行添加
2. 搜索
在这个位置上添加以下代码:
注:这里的id值可以选择两种
十、给每篇文章添加类别和标签
在创建的文章都在source/_post目录下找到,每篇文章添加tags、categories。
十一、添加进度条
添加进度条的话在手机浏览的时候一般情况都有自带的进度条了,例如微信浏览、浏览器浏览等等,这样就出现重复的进度条了,这里看个人是否添加。但是在电脑浏览器浏览却是不错的。
按照以下步骤进行或者进入这里 Progress配置(https://github.com/theme-next/theme-next-pace) 查看如何配置
1. 打开Git Bash Here进入自己文件夹下/themes/next文件夹下
2. 下载安装 Progress module 执行
在 /themes/next/source/lib查看会看到pace文件夹
3. 在/themes/next/_config.yml设置
十二、添加站内搜索
由于可能需要快速查找相关文章,那么就需要添加站内搜索。
按以下步骤进行或者进入 NexT配置站内搜索(https://github.com/theme-next/hexo-generator-searchdb) 文档查看如何配置
1. 安装站内搜索插件
2. 在根目录下的 _config.yml添加
3. 在themes/next/_config.yml文件中搜索local_search,进行设置
十三、添加打赏
NexT主要提供三种打赏方式分别是微信、支付宝、比特币
在themes/next搜索Reward:
十四、友情链接
十五、添加阅读统计
给每篇文章进行添加阅读统计,效果如下图:
1. 进入 leancloud(https://leancloud.cn/)
2. 创建应用
3. 进入设置页面获取应用Key
将App ID、App Key 配置到next/_config.yml中leancloud_visitors
4. 在leancloud存储的位置创建Class,必须命名为Counter
5. 查看后台统计数据
十六、添加评论
我的博客选择的是Valine。
在next/_config.yml搜索Valine,进入 Valine(https://leancloud.cn/) 官网,也是 leancloud(https://leancloud.cn/) 官网,进入leancloud 控制台,没有账号密码就进行设置。
1. 创建应用
参考上面 添加阅读统计 的创建应用。
2. 进入设置页面获取应用key
参考上面 添加阅读统计 的进入设置页面获取应用key。
3. 在next/_config.yml进行配置。
4. 显示结果
这样就完成了valine评论的配置了,接下来就可以进行评论了,我们还可以在后台查看评论信息。
5. 在后台查看评论数据
在valine后台,存储位置中的数据里面创建Class,名称必须为命名为Comment。
参考上面 添加阅读统计 的创建Class。
注:选择valine评论系统是因为支持国内网络,不需要连接外网(翻墙)就可以进行显示评论系统,而且很好管理,页面简单。
十七、添加RSS
效果如下图:
实现步骤如下:
1. 切换到你的blog根目录下,然后安装 Hexo 插件:(这个插件会放在node_modules这个文件夹里)
2. 然后在根目录的站点配置文件 _config.yml下进行配置
3. 然后打开next主题文件夹里面的_config.yml,在里面配置为如下:
十八、点击出现桃心效果
效果如下图:
实现步骤如下:
1. 打开浏览器,输入:http://7u2ss1.com1.z0.glb.clouddn.com/love.js
2. 然后将里面的代码copy一下,新建love.js文件并且将代码复制进去,然后保存。
3. 将love.js文件放到路径/themes/next/source/js/src里面,然后打开\themes\next\layout\_layout.swig文件,在末尾(在前面引用会出现找不到的bug)添加以下代码:
十九、修改文章内链接文本样式
效果如下图:
实现步骤如下:
修改文件 themes\next\source\css\_common\components\post\post.styl,在末尾添加如下css样式:
其中选择 .post-body 是为了不影响标题,选择 p 是为了不影响首页“阅读全文”的显示样式,颜色可以自己定义。
二十、在每篇文章末尾统一添加“本文结束”标记
效果如下图:
实现步骤如下:
在路径 \themes\next\layout\_macro 中新建 passage-end-tag.swig 文件,并添加以下内容:
接着打开\themes\next\layout\_macro\post.swig文件,在post-body 之后, post-footer`之前添加如下画红色部分代码(post-footer之前两个DIV):
然后打开主题配置文件_config.yml,在末尾添加:
二十一、修改``代码块自定义样式
效果如下:
实现步骤如下:
打开\themes\next\source\css\_custom\custom.styl,向里面加入:(颜色可以自己定义)
二十二、主页文章添加阴影效果
效果如下图:
实现步骤如下:
打开\themes\next\source\css\_custom\custom.styl,向里面加入:
二十三、添加热度
效果如下图:
实现步骤如下:
next主题集成leanCloud,打开/themes/next/layout/_macro/post.swig ,在画红线的区域添加 ℃:
然后打开,/themes/next/languages/zh-Hans.yml,将画红框的改为热度就可以了:
二十四、网站底部字数统计
效果如下图:
实现步骤如下:
切换到根目录下,然后运行如下代码
然后在/themes/next/layout/_partials/footer.swig文件尾部加上:
二十五、添加 README.md 文件
每个项目下一般都有一个 README.md 文件,但是使用 hexo 部署到仓库后,项目下是没有 README.md 文件的。
在 Hexo 目录下的 source 根目录下添加一个 README.md 文件,修改站点配置文件 _config.yml,将 skip_render 参数的值设置为
保存退出即可。再次使用 hexo d 命令部署博客的时候就不会在渲染 README.md 这个文件了。
二十六、实现统计功能
效果如下图:
实现步骤如下:
在根目录下安装 hexo-wordcount,运行:
然后在主题的配置文件中,配置如下:
二十七、添加顶部加载条
效果如下图:
实现步骤如下:
打开/themes/next/layout/_partials/head.swig文件,添加红框上的代码
但是,默认的是粉色的,要改变颜色可以在/themes/next/layout/_partials/head.swig文件中添加如下代码(接在刚才link的后面)
二十八、在文章底部增加版权信息
效果如下图:
实现步骤如下:
在目录 next/layout/_macro/下添加 my-copyright.swig:
在目录next/source/css/_common/components/post/下添加my-post-copyright.styl:
修改next/layout/_macro/post.swig,在代码
之前添加增加如下代码:
如下图:
修改next/source/css/_common/components/post/post.styl文件,在最后一行增加代码:
保存重新生成即可。如果要在该博文下面增加版权信息的显示,需要在 Markdown 中增加copyright: true的设置,类似:
如果你觉得每次都要输入copyright: true很麻烦的话,那么在/scaffolds/post.md文件中添加:
这样每次hexo new "你的内容"之后,生成的md文件会自动把copyright:true加到里面去。
二十九、隐藏网页底部powered By Hexo / 强力驱动
打开themes/next/layout/_partials/footer.swig,隐藏或删除如下代码,如下图:
三十、修改打赏字体不闪动
修改文件next/source/css/_common/components/post/post-reward.styl,然后注释其中的函数wechat:hover和alipay:hover,如下:
三十一、文章加密访问
效果如下图:
实现步骤如下:
打开themes/next/layout/_partials/head/head.swig文件,在以下位置插入这样一段代码:
然后在文章上写成类似这样:
三十二、添加鼠标点击显示字体效果
效果如下图:
实现步骤如下:
在 /themes/next/source/js 下新建文件click_show_text.js,在 click_show_text.js文件中添加以下代码:
其中的社会主义核心价值观可以根据你自己的创意替换为其他文字,然后在 \themes\next\layout\_layout.swing文件末尾添加以下代码:
三十三、添加鼠标点击烟花爆炸效果
效果如下图:
实现步骤如下:
在 \themes\next\source\js 目录下新建一个 fireworks.js 的文件,里面写入以下代码:
然后在 \themes\next\layout\layout.swing 文件中写入以下代码:
三十四、自定义鼠标指针样式
在 \themes\next\source\css\_custom\custom.styl 文件 body 样式里写入如下代码:
鼠标指针可以用 Axialis CursorWorkshop 这个软件自己制作,不同主题具体放的文件有所不同,确保在博客主体 body 的 CSS 文件中即可,其中的鼠标指针链接可替换成自己的,首先尝试加载mouse.cur ,如果该文件不存在或由于其他原因无效,那么 auto 会被使用,也就是自动默认效果,图片格式为.ico、.ani、.cur,建议使用.cur,如果使用.ani或者其他格式无效,原因是浏览器兼容问题。
三十五、添加彩色滚动变换字体
在你想要添加彩色滚动变换字体的地方写入以下代码即可,其中文字可自行更改:
我是放在了侧边栏头像的下边,描述的位置\themes\next\layout\_macro\sidebar.swing:
三十六、浏览器网页标题恶搞
效果如下图:
实现步骤如下:
在目录 \themes\next\source\js 下新建一个 FunnyTitle.js 文件,在里面填写如下代码:
然后在 \themes\next\layout\layout.swing 文件中写入以下代码:
再次部署博客后就可以看见标题搞笑的效果了。
三十七、添加网站雪花飘落效果
效果如下图:
实现步骤如下:
在\themes\next\source\js目录下新建一个 snow.js文件,粘贴以下代码:
然后在 \themes\next\layout\layout.swing 文件中写入以下代码:
如果没效果,请确认网页是否已载入JQurey,如果没有请在下雪代码之前引入JQ即可:
三十八、添加背景动态彩带效果
效果如下图:
实现步骤如下:
在 \themes\next\layout\layout.swing 文件中写入以下代码:
三十九、添加背景代码雨特效
效果如下图:
实现步骤如下:
在 \themes\next\source\js 目录下新建一个 DigitalRain.js文件,粘贴以下代码:
然后在 \themes\next\source\css\_custom\custom.styl 中写入样式:
在 \themes\next\layout\layout.swing 文件中写入以下代码:
四十、代码块复制功能
效果如下图:
实现步骤如下:
1. 下载 clipboard.js clipboard.js(https://raw.githubusercontent.com/zenorocha/clipboard.js/master/dist/clipboard.js) clipboard.min.js(https://raw.githubusercontent.com/zenorocha/clipboard.js/master/dist/clipboard.min.js)
保存文件clipboard.js / clipboard.min.js 到路径\themes\next\source\js\src下。
2. 使用clipboard.js
也是在 \themes\next\source\js\src 目录下,创建clipboard-use.js,文件内容如下:
在\themes\next\source\css\_custom\custom.styl样式文件中添加下面代码:
3. 引用
在\themes\next\layout\_layout.swig文件中,添加引用(注:在 swig 末尾或 body 结束标签(
发表评论