使用 Github 空间搭建 Hexo 技术博客——使用NexT优化博客(五)
参考博客
一.主题安装
1.安装next主题
在项目根目录下,我的项目是e:/work/myblog
,打开Git Bash Here执行以下命令
git clone https://github.com/theme-next/hexo-theme-next themes/next
2.将Hexo的主题切换为next主题
在项目根目录下打开_config.yml
文件将theme
设置为next
即:
3.运行命令测试
$ hexo clean
$ hexo s
二.主题配置
接下来就是进入我们博客核心部分了,配置属于自己的主题,让我们一起进入学习吧。
- 注:这里可能不能全部去设置,大家有属于自己的,可以去研究,欢迎一起分享,可能在后期有遇到好的配置会在接下来的文章编写。
- 注:一般配置都在theme/next/-config.yml文件下配置
1.修改整体布局
在theme/next/-config.yml
找到menu
看看自己博客所需的分类
#目录
menu:
home: / || home #首页
tags: /tags/ || tags #标签
categories: /categories/ || th #分类
archives: /archives/ || archive #归档
about: /about/ || user #关于本站
#schedule: /schedule/ || calendar #时间表
#sitemap: /sitemap.xml || sitemap #网站地图
#commonweal: /404/ || heartbeat #公益
显示如下:
在menu_settings
如果设置icon: false
则无图标,badges: true
则标签都会显示数字,个人喜欢不加数字
menu_settings:
icons: true
badges: true #默认是false
- 注:这里我们需要创建
about
页面,很简单,同理创建标签tags
、归档archives
页面一样的方式,所需要创建的名称要与menu相对应
,举例说明如下。
$ hexo new page about #看看menu上还有什么标签没创建就行创建
$ hexo new page tags #创建标签等
$ hexo new page categories #创建分类等
$ hexo new page achives #创建归档等
创建完成之后我们在自己项目查找,如我的是myblog/source/
目录下查看新创建好的相关标签页面,里面包含各自的index.md
文件,大家可以自行编辑了。
2.Schemes方案设置
# Schemes
#scheme: Muse #这是 Nex默认版本,黑白主调,大量留白
#scheme: Mist #Muse 的紧凑版本,整洁有序的单栏外观
#scheme: Pisces #双栏 Scheme,小家碧玉似的清新
scheme: Gemini #双子座,也是双栏形式,和Pisces类似
3.social设置
使用方式: Key: permalink || icon
Key
表示标签显示,permalink
表示URI连接,icon
表示图标,自己添加所要显示的,
social:
GitHub: https://github.com/wugenqiang || github
E-Mail: mailto:[email protected] || envelope
****: https://blog.****.net/wugenqiang || heartbeat
Gitee: https://gitee.com/wugenqiang || gitlab
#简书: https://www.jianshu.com/u/447fdef5fb8f || heartbeat
#Segmentfault: https://segmentfault.com/blog/iconye_vue || link
#知乎: https://www.zhihu.com/people/yi-ke-id/activities || ioxhost
#Google: https://plus.google.com/yourname || google
#Twitter: https://twitter.com/yourname || twitter
#FB Page: https://www.facebook.com/yourname || facebook
#VK Group: https://vk.com/yourname || vk
#StackOverflow: https://stackoverflow.com/ || stack-overflow
#YouTube: https://youtube.com/yourname || youtube
#Instagram: https://instagram.com/yourname || instagram
#Skype: skype:yourname?call|chat || skype
social_icons: #设置图标是否显示这里
enable: true #表示开启
icons_only: true 只显示图片
transition: true
exturl: false
4.avatar头像设置
avatar:
url: #/images/avatar.gif #头像图片路径 图片放置在next/source/images
rounded: false #是否显示圆形头像,true表示圆形,false默认
opacity: 0.7 #透明度0~1之间
rotated: false #是否旋转 true表示旋转,false默认
5.toc边栏中的目录设置
toc:
enable: false #是否启动侧边栏
number: true #自动将列表编号添加到toc。
wrap: false #true时是当标题宽度很长时,自动换到下一行
6.Creative Commons 4.0国际许可设置
creative_commons:
# Available: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | zero
license: by-nc-sa
sidebar: true
post: true
language:
7.sidebar侧边栏配置这里选择默认吧。
大家可以去看看里面的属性,有许多相对应的scheme
而设置。
8.save_scroll配置
save_scroll: false # 是否在Cookie中自动保存每个帖子/页面上的滚动位置。
9.excerpt_description
excerpt_description: true #是否自动摘录主页中的描述作为前导文本。
10.auto_excerpt配置
auto_excerpt:
enable: true #是否自动摘录。不推荐。
length: 150 #这里是说文章开头第一个字到第150个字就显示"阅读全文"
11.codeblock代码块配置
codeblock:
copy_button:
enable: true #是否添加复制按钮
show_result: true #是否显示文本复制结果
12.wechat_subscriber微信配置
wechat_subscriber:
enabled: true #是否启动微信订阅
qcode: /path/to/your/wechatqcode ex. /uploads/wechat-qcode.jpg #设置图片
description: ex. subscribe to my blog by scanning my public wechat account #描述
13.Code Highlight theme 代码突出显示主题
# Available values: normal | night | night eighties | night blue | night bright
highlight_theme: normal #设置喜欢的模式,默认:normal
14.footer 底部设置
footer:
icon:
name: user #设置图标,想修改图标从https://fontawesome.com/v4.7.0/icons获取
animated: true #是否要为图标设置动画,默认为false
color: "#66CDAA" #图标颜色
copyright: ©2019 by WuGenQiang #版权
#powered:
#enable: true #是否显示 Hexo link
#version: true #是否显示Hexo链接后的Hexo版本信息(vX.X.X)
#theme:
#enable: true #是否显示NexT Themelink
#version: true #是否显示NexT版本信息
15.favicon标签页图标
favicon:
small: /images/favicon-16x16-next.png #小图标 默认的NexT
medium: /images/favicon-32x32-next.png #中图标 默认NexT
apple_touch_icon: /images/apple-touch-icon-next.png #苹果触摸图标
safari_pinned_tab: /images/logo.svg #safari固定标签
16.在每篇文章末尾统一添加“本文结束”标记
实现效果图
具体实现方法
在路径 \themes\next\layout\_macro
中新建 passage-end-tag.swig
文件,并添加以下内容:
<div>
{% if not is_index %}
<div style="text-align:center;color: #ccc;font-size:14px;">-------------本文结束<i class="fa fa-paw"></i>感谢您的阅读-------------</div>
{% endif %}
</div>
接着打开\themes\next\layout\_macro\post.swig
文件,在post-body
之后, post-footer
之前添加如下画红色部分代码(post-footer之前两个DIV):
代码如下:
<div>
{% if not is_index %}
{% include 'passage-end-tag.swig' %}
{% endif %}
</div>
然后打开主题配置文件(_config.yml
),在末尾添加:
# 文章末尾添加“本文结束”标记
passage_end_tag:
enabled: true
完成以上设置之后,在每篇文章之后都会添加如上效果图的样子。
17.主页文章添加阴影效果
打开\themes\next\source\css\_custom\custom.styl
,向里面加入
// 主页文章添加阴影效果
.post {
margin-top: 5px;
margin-bottom: 2px;
padding: 2px;
-webkit-box-shadow: 0 0 5px rgba(202, 203, 203, .5);
-moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5);
}
效果如下:
三.第三方服务配置
1.Math Equations Render Support 数学方程式渲染支持
math:
enable: true #默认为false
per_page: true
engine: mathjax #两种方式 mathjax / katex
mathjax:
cdn: //cdn.jsdelivr.net/npm/[email protected]/MathJax.js?config=TeX-AMS-MML_HTMLorMML #默认 这里大家根据自己需求
katex:
cdn: //cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css #默认
2.Han Support 支持汉字
1.打开Git Bash Here
进入themes/next
目录下
2.获取该汉字支持Git module
,执行命令以下命令获得
git clone https://github.com/theme-next/theme-next-han source/lib/Han
3.设置汉字支持
han: true
4.更新update
$ cd themes/next/source/lib/Han
$ git pull
- 注: 通过该链接可以查看以上步骤 https://github.com/theme-next/theme-next-han
3.添加图标链接到GitHub
一般在右上角或者左上角
1.打开Fork_me_on_GitHub链接,里面有许多样式,选择自己喜欢的样式,将其复制下来。
2.打开自己博客项目中的themes/next/layout/_layout.swig
文件,搜索<div class="headband"></div>
将复制的内容粘贴到<div class="headband"></div>
下面,如下:
当然也可以使用下面连接:http://tholman.com/github-corners/
注意开头的连接url要改成自己的地址,比如我的是https://github.com/wugenqiang
4.将文章底部#
标签修改带为带图标
的形式
在博客项目中找到/themes/next/layout/_macro/post.swig
,搜索 rel="tag"
,将 #
号 换成<i class="fa fa-tag"></i>
5.font字体设置
在themes/next/_config.yml
搜索font
6.设置背景动画样式
NexT里面有几种动画背景样式canvas_nest
、three_waves
、canvas_lines
、canvas_sphere
等
安装这款:canvas_nest
按照以下步骤完成
1.打开Git Bash Here
进入自己文件夹下/themes/next文件夹下
2.下载安装 canvas_nest module
执行
git clone https://github.com/theme-next/theme-next-canvas-nest source/lib/canvas-nest
3.在/themes/next/_config.yml
设置
canvas_nest: true
- 注:canvas_nest连接
-
注:这里也可以查看设置步骤:canvas_nest设置
7.给每篇文章添加类别和标签
在创建的文章都在source/_post
目录下找到,每篇文章添加tags
、categories
结果:
8.添加站内搜索
由于可能我需要快速查找相关文章,那么就需要添加站内搜索。
按以下步骤进行
- 注:或者进入NexT配置站内搜索文档查看如何配置
1.安装站内搜索插件
$ npm install hexo-generator-searchdb --save
或者
$ cnpm install hexo-generator-searchdb --save
2.在根目录下的_config.yml
添加
#表示站内搜索
search:
path: search.xml
field: post
format: html
limit: 10000
3.在themes/next/_config.yml
文件中搜索local_search
,进行设置
local_search:
enable: true #设置为true
trigger: auto # auto / manual,auto 自动搜索、manual:按回车[enter ]键手动搜索
top_n_per_article: 1
unescape: true
9.添加打赏功能
NexT主要提供三种打赏方式分别是微信、支付宝、比特币
在themes/next
搜索Reward
,三个都打开吧
# Reward
reward_comment: Donate comment here # 描述
wechatpay: /images/wechatpay.jpg
alipay: /images/alipay.jpg
bitcoin: /images/bitcoin.png
10.实现博文压缩
在站点的根目录下执行以下命令:
$ npm install gulp -g
$ npm install gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp --save
在如下图所示,新建 gulpfile.js
,并填入以下内容:
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
// 压缩 public 目录 css
gulp.task('minify-css', function() {
return gulp.src('./public/**/*.css')
.pipe(minifycss())
.pipe(gulp.dest('./public'));
});
// 压缩 public 目录 html
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public'))
});
// 压缩 public/js 目录 js
gulp.task('minify-js', function() {
return gulp.src('./public/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 执行 gulp 命令时执行的任务
gulp.task('default', [
'minify-html','minify-css','minify-js'
]);
生成博文是执行 hexo g && gulp
就会根据 gulpfile.js
中的配置,对 public 目录中的静态资源文件进行压缩。
但是注意:
在hexo 最新3.8版本里面安装gulp 进行压缩。发现会进行报错。百思不得其解,发现是因为网络上的gulp教程均适用于 gulp 4.0 版本以下 ,如果是安装了最新的gulp 4.0 版本的情况下,则就会进行报错。解决办法在下面有说明
解决办法参考:https://master.compassionate-raman-1e7f63.netlify.com/posts/74d69307.html
由于我的gulp4..0所以配置文件改为:
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
// 压缩 public 目录 css
gulp.task('minify-css', function() {
return gulp.src('./public/**/*.css')
.pipe(minifycss())
.pipe(gulp.dest('./public'));
});
// 压缩 public 目录 html
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public'))
});
// 压缩 public/js 目录 js
gulp.task('minify-js', function() {
return gulp.src('./public/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 执行 gulp 命令时执行的任务
// gulp 4.0 适用的方式
gulp.task('build', gulp.parallel('minify-html', 'minify-css', 'minify-js'
//build the website
));
欧克,成功